Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 클린아키텍처
- TDD
- 유지보수
- 책스터디
- 만들면서배우는클린아키텍처
- FP
- 헥사고날아키텍처
- template
- 개발방법론
- 아키텍처
- 스터디
- DDD
- 테스트주도개발
- 객체지향의사실과오해
- Java
- 도메인 주도 개발 시작하기
- Boot Legacy 차이점
- Kotlin
- 함수형프로그래밍
- 코틀린
- 조영호
- Spring
- web
- 이펙티브코틀린
- GrokkingFunctionalProgramming
- 테스트
- 추상화 설계
- 계층형아키텍처
- Thymeleaf
- 개발서적
Archives
- Today
- Total
김동형수 개발기
테스트 주도 개발 - 2부 23장 본문
23장 얼마나 달콤한지
테스트 메서드 호출하기먼저 setUp 호출하기나중에 tearDown 호출하기
테스트 메서드가 실패하더라도 tearDown 호출하기
여러 개의 테스트 실행하기수집된 결과를 출력하기WasRun에 로그 문자열 남기기setUp 에러를 잡아서 보고하기
실패한 테스트 보고하기
TestSuite를 다루지 않고는 xUnit을 떠날 수 없다.
TestCaseTest 하단에 테스트를 나열하는 모양새는 좋아보이지 않는다.
여러 테스트를 실행할 수 있는 TestSuite를 구현한다.
구조는 TestSuite에서 test를 배열로 가지고 있고 for loop를 수행하면서 실행한다.
TestCase.run에 매개변수를 추가하게되면 TestSuite.run에도 매개변수를 추가해야하는데 대안으로 3가지가 떠오른다고 한다.
- 파이썬의 기본 매개 변수 기능을 사용한다. 불행히도 기본값은 런타임이 아닌 컴파일타임에 평가되므로 하나의 TestResult를 재사용할 수 없게된다.
- 메서드를 두 부분으로 나눈다. 하나는 TestResult를 할당하는 부분, 또 하나는 할당된 TestResult를 가지고 테스트를 수행하는 부분, 그런데 이 두 부분에 대한 좋은 이름이 떠오르질 않는다. 그것은 이렇게 나누는 것이 그리 좋은 전략은 아니라는 것을 뜻한다.
- 호출하는 곳에서 TestResult를 할당한다.
호출하는 곳에서 TestResults를 할당하는 전략을 선택하자. 이 패턴은 매개 변수 수집이라 부른다.
이 해법은 run()이 명시적으로 반환하지 않아도 된다는 추가적인 장점이 있다.
테스트 메서드 호출하기먼저 setUp 호출하기나중에 tearDown 호출하기
테스트 메서드가 실패하더라도 tearDown 호출하기
여러 개의 테스트 실행하기수집된 결과를 출력하기WasRun에 로그 문자열 남기기setUp 에러를 잡아서 보고하기
실패한 테스트 보고하기
TestCase 클래스에서 TestSuite 생성하기
중복이 상당히 많은데, 주어진 테스트 클래스에 대한 테스트 슈트를 자동 생성할 방법이 있다면 그 중복을 제거할 수 있을 것이다.
그 전에 실패하는 테스트 3개를 고쳐야한다.
테스트 메서드 호출하기먼저 setUp 호출하기나중에 tearDown 호출하기
테스트 메서드가 실패하더라도 tearDown 호출하기여러 개의 테스트 실행하기수집된 결과를 출력하기WasRun에 로그 문자열 남기기setUp 에러를 잡아서 보고하기
실패한 테스트 보고하기
TestCase 클래스에서 TestSuite 생성하기
self 키워드가 반복되지만 객체 언어가 아니기 때문에 어쩔 수 없다고 저자는 말한다.
정리
- TestSuite를 위한 테스트를 작성했다.
- 테스트를 통과시키지 못한 채 일부만 구현하였다. 이것은 '규칙' 위반이다. 만약 그때 이걸 직접 발견했다면, 돈주머니에서 테스트케이스 두 개를 공짜로 가져가도 좋다. 테스트를 통과시키고 초록 막대상태에서 리펙토링할 수 있게 할 간단한 가짜 구현이 있을 것 같긴 한데, 지금은 그게 뭔지 잘 떠오르지 않는다.
- 아이템과 아이템의 모음(컴포지트)이 동일하게 작동할 수 있도록 run 메서드의 인터페이스를 변경하였고 마침내 테스트를 통과시켰다.
- 공통된 셋업 코드를 분리했다.
'책 스터디 > [완료] 테스트 주도 개발' 카테고리의 다른 글
테스트 주도 개발 - 3부 26장 (1) | 2022.10.19 |
---|---|
테스트 주도 개발 - 3부 25장 (1) | 2022.10.19 |
테스트 주도 개발 - 2부 22장 (0) | 2022.10.03 |
테스트 주도 개발 - 2부 21장 (2) | 2022.10.03 |
테스트 주도 개발 - 2부 20장 (0) | 2022.09.28 |
Comments