[테스트 주도 개발] 29장_xUnit 패턴

xUnit 계열의 테스트 프레임워크를 위한 패턴을 정리한다.

assertion

테스트가 어떻게 잘 작동하는지 테스트 할 것인가?
boolean 수식을 이용해서, 프로그램이 코드가 동작하는지 자동으로 판단하도록 해라.

fixture

여러 테스트에서 공통으로 사용하는 객체들을 생성할 때 어떻게 하면 좋을까?
각 테스트 코드의 지역 변수를 인스턴스 변수로 바꾸고 setUp() 메서드에 재정의해라. 그리고, setUp() 메서드에서 인스턴스 변수들을 초기화하도록 해라.

외부 fixture

픽스처 중에 외부 자원이 있을 경우에 어떻게 해제할 것인가?
tearDown() 메서드를 재정의해라. 그리고, teaDown() 메서드에서 자원을 해제하라.

테스트 메서드

테스트 케이스 하나를 어떻게 표현하나?
‘test’ 로 시작하는 이름의 메서드로 읽기 쉽도록 표현해라.

예외 테스트

예외가 발생하는 것이 정상인 경우에 대한 테스트는 어떻게 작성하나?
예상되는 예외를 잡아서 무시하고, 예외가 발생하지 않은 경우에 대해서는 테스트를 실패하게 만들어라. fail() 은 테스트가 실패했음을 알려주는 xUnit 메서드이다.

전체 테스트

모든 테스트를 한번에 실행하려면 어떻게 하나?
모든 테스트 슈트에 대한 모음을 작성해라.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class AllTests {

public static void main(String[] args) {
junit.swingui.TestRunner.run(AllTests.class);
}

public static Test suite(){
TestSuite result = new TestSuite("TFD tests");
result.addTestSuite(MoneyTest.class);
result.addTestSuite(ExchagneTest.class);
result.addTestSuite(IdentityRateTest.class);

return result;
}
}

테스트 주도 개발 <켄트 벡>

Comments