그래서 C#에서 쉽게 이용할 수 있는 NUnit을 이용하여 단위 테스트를 사용해보자.
NUnit 등 모두 결국 테스트 코드를 작성하는데 시간을 줄여주고 구현한 코드에 대한 신뢰성을 확보하는 방법을 도와주는 프레임워크라고 생각한다. 콘솔이더라도 동일하게 위의 기능을 작성할 수 있는 것이다.(비록 시간은 많이 소요될 것이다.) '초록 막대'의 기쁨, 그리고 체계적인 테스트 코드의 관리를 위해서 NUnit 등을 사용한다고 생각한다.
하지만, 멀티 쓰레드 기반의 네트워크 시스템을 체크할 때는 결국 NUnit을 이용할려니 더 복잡해서 콘솔을 이용한 간단한 테스트 프로젝트를 작성하였다. 복수의 서버와 클라이언트들의 동기화에 대한 정보를 Assert로 구현하는 것이 더 힘들어 보였다. T-T
(혹시, 위와 같은 경우에 사용할 수 있는 NUnit의 기술이 있다면 알려주세요^^)
#01. NUnit의 설치
NUnit은 다음의 사이트에서 다운 받을 수 있다.
다운로드: http://www.nunit.org/현재의 가장 최신 버젼은 NUnit-2.5.4.10098.msi 이다. 이를 다운 받아서 설치하면 Visual Studio의 참조에도 자동으로 추가된다.
#02. NUnit의 참조추가
이제 자신이 구현한 클래스(혹은 함수) 등을 테스트하기 위해서 테스트 프로젝트를 추가하고 '참조 추가'를 선택하여 "nunit.framework" 를 추가한다.
#03. 테스트 코드의 작성
이제 NUnit을 사용하기 위한 모든 환경 설정을 끝이 났다. 자신이 테스트, 검증해야 할 내용들에 대한 테스트 코드를 아래와 같이 작성한다.
정말 간단한 예제로 DateTime 클래스의 Type을 가져와서 이름을 string으로 반환하여 값이 "DateTime"이 맞는지 확인하는 코드이다. 단위 테스트에서는 자신이 지정한 동작을 수행하고 그 결과가 예상값과 동일한지 확인하는 작업이기 때문에 위와 같이 코드가 작성된다.
[TestFixture]은 해당 클래스가 테스트 클래스인 것을 NUnit에게 알려주고 [Test]는 해당 함수가 테스트 함수라는 것을 선언한다. Test 함수가 될 수 있는 것은 리턴값이 void 인 함수이다.
#04. NUnit 프로그램으로 단위 테스트의 실행
테스트 주도 개발에서의 단위 테스트의 묘미는 역시 '초록불'이다. 초록불이 들어오는 것만으로 개발하는 기분이 좋아지고 뭔가 확신한 안심을 준다. 하지만 Console로 프로젝트를 실행할 경우에는 초록불이 없다. (위의 예제 코드도 프로젝트의 속성을 '라이브러리로 출력'으로 변경해서 컴파일)
위의 예제 코드에서 생성된 DLL 파일을 처음 #01에서 설치한 NUnit 프로그램을 실행하여 열어보자. (Visual Studio에서 자동으로 열게 할 수 있을 것 같은데 실패했다.)
위와 같이 '초록색'이 들어오면 유닛테스트는 성공한 것이다. 실패할 경우에는 실패한 코드의 줄이 표시된다.
지금의 예제는 간단한 유닛테스트를 하는 방법이었다. 만약 좀 더 NUnit의 다양한 기능들이 필요한 경우에는 다음의 글들을 참고하자.
- NUnit Quick Start, http://www.nunit.org/index.php?p=quickStart&r=2.5.4
: NUnit 사용을 위한 가장 기초적인 문서(본 글과 거의 유사) - NUnit Document, http://www.nunit.org/index.php?p=docHome&r=2.5.4
: NUnit Document로 설치, 사용 방법들에 관해서 자세히 나와 있음.
결국 코드의 품질을 위한 작업이다. 단위 테스트를 통해서 코드의 Refactoring과 검증을 이룰 수 있도록 하자.











