2. 지속되는 신선한 픽스처
1회용
신선한
픽스처
I’m here
지속되는 공유
픽스처
불변
공유
픽스처
3. 지속 & 신선 픽스처?
• 신선한 픽스처 젂략
– 테스트 메소드를 실행할 때마다 픽스처를 새로
생성
– 픽스처를 재사용 안함
• 픽스처가 1회용이라는 의미가 아님
• 지속되는 신선한 픽스처?
– 픽스처는 새로 생성하나 이젂 상태가 남아있다!
4. 픽스처는 지속되면 안되나요?
• 반복 안 되는 테스트 발생
– 테스트가 그때 그때 결과가 다르다
생성(pk id: 1)
setUp DOC
test_1
생성(pk id: 1) 픽스처
setUp
DB
PK 충돌
test_2
SUT
5. 픽스처가 지속되는 이유
• SUT에서 데이터베이스를 사용하는 경우
• SUT에서 클래스 변수에 데이터를 저장하
는 경우
• 무엇이 됐든 픽스처의 상태가 남아있게 된
경우 (보통은 외부 리소스)
– 예) .net의 Dispose 호출을 안했을 경우
6. 지속되는 신선한 픽스처 해체
• 해체 코드는 없는 게 최선
– 테스트 이해에 도움이 되지 않는다
– 즉, 가비지 컬렉션 해체가 좋다
7. 조잡한 인라인 해체
public void testGetFlightsByOriginAirport() {
//픽스처 설치
BigDecimal outboundAirport = createTestAirport(‚10F‛);
try {
// 시스템 실행
List flightsAtDestination1 =
façade.getFlightsByOriginAirport(outboundAirport);
// 결과 검증
assertEquals(0, flightsAtDestination1.size());
} finally {
façade.removeAirport(outboundAirport);
}
}