[테스트 주도 개발] 18장_xUnit 으로 가는 첫걸음
2부는 테스트 주도 개발을 통해 테스트 프레임워크를 만들어 본다. 다음은 테스트 프레임워크에 대한 할일 목록이다.
- 테스트 메서드 호출하기
- 먼저 setUp 호출하기
- 나중에 tearDown 호출하기
- 테스트 메서드가 실패해도 tearDown 호출하기
- 여러 개의 테스트 실행하기
- 수집된 결과를 출력하기
먼저, 테스트 메서드가 호출되면 true, 그렇지 않으면 false 를 반환할 작은 프로그램이 필요하다. 플래그를 가진 테스트 케이스를 만들것이다. 테스트 메서드가 실행되기 전에는 플래그가 false 이다. 실행된 이후에는 true 이다. 메서드가 실행되었는지 알려주는 테스크 케이스이므로 클래스 이름은 WasRun 으로 하자.
1 | test = WasRun("testMethod") |
위 코드는, 메서드가 실행되기 전에는 “None” 을 출력, 그 후에 “1” 을 출력할 것으로 예상된다. 하지만, 아니다. 아직 WasRun 클래스를 정의하지 않았다.
WasRun 클래스 정의하자.
1 | class WasRun: |
이제, 실행하면 “None” 을 출력하고, testMethod 를 정의해야한다고 알려준다.
정의하자.
1 | class WasRun: |
이제 필요한 것은, 테스트 메서드를 직접 호출하는 대신 인터페이스인 run() 메서드를 이용하는 것이다. 테스트는 다음과 같이 변한다.
1 | test = WasRun("testMethod") |
run 을 추가하자.
1 | class WasRun: |
그리고 실행하면, 다시 올바른 값을 출력한다. 다음 단계는, testMethod() 를 동적으로 호출하는 것이다. 다음과 같다.
1 | class WasRun: |
이제 WasRun 클래스는 두 가지 일을 한다.
- 메서드가 호출되었는지 아닌지 기억하는 일
- 메서드를 동적으로 호출
이제, TestCase 상위 클래스를 만들고 WasRun 이 이것을 상속받게 하자.
1 | class TestCase: |
1 | class WasRun(TestCase): |
마지막으로, run() 메서드는 상위 클래스에 있는 속성만을 사용하므로 상위 클래스로 올리자.
1 | class TestCase: |
테스트 실행 성공한다. 이제 다음과 같이 바꾸자.
1 | class TestCaseTest(TestCase): |
테스트 메서드 호출하기- 먼저 setUp 호출하기
- 나중에 tearDown 호출하기
- 테스트 메서드가 실패해도 tearDown 호출하기
- 여러 개의 테스트 실행하기
- 수집된 결과를 출력하기
테스트 주도 개발 <켄트 벡>