본문 바로가기

Programing/테스트

단위테스트가 아닌 것들, 팁

레거시코드 활용 전략

p.43

단위테스트는 빠르게 실행된다. 빠른 속도로 실행되지 않는 단위테스트는 단위테스트가 아니다.


다음과 같은 일을 한다면 그것은 단위테스트가 아닐 것이다.

1. 해당 테스트가 데이터베이스와 통신한다.

2. 네트워크를 통해 통신한다.

3. 파일시스템을 건드린다.

4. 실행하기 위해 구성 파일 편집처럼 환경을 바꾸는 작업(.cfg나 .ini 파일 등의 수정)을 해야 한다.


이런 일을 하는 테스트가 나쁜 것은 아니지만 이와 같은 코드를 작성하기 위해 보통 단위테스트 하니스 내에서 작성하게 된다. 하지만 이 경우, 진정한 단위테스트 루틴과 구별하는 것이 좋다. 그렇게 함으로서 변경시킬 때마다 사용할 수 있고 빠르게 실행되는 일련의 테스트 루틴을 확보 할 수 있기 때문이다.


NUnit에서는 카테고리를 지정해두면 해당 카테고리 별로, 혹은 제외하고 실행시킬 수 있다.

아래 ClientTests는 네트워크를 사용하는 Client라는 클래스를 테스트하는 클래스이다.

위와 같이 Category라는 속성을 지정해주면, NUnit runner에서 아래와 같이 카테고리가 추가가 된다.


Add / Remove 버튼을 통해 카테고리를 선택할 수 있으며,

Exclude these categories에 체크를 하면 해당 카테고리만 테스트를 하지 않을 수 있다.


통합테스트를 추가를 하고 체크를 해놓으면 단위테스트만 할 수 있는 것이다.