카테고리 없음
테스트로 도메인 지식을 유출하면 안된다.
monkeyDugi
2023. 8. 10. 21:45
반응형
서론
회사에서 단위 테스트 스터디를 하면서 챕터 11에서 테스트로 도메인 지식을 유출하면 안된다는 내용을 봤다.
좋은 내용 같아서 정리한다.
본론
문제점
- 무의미한 검증
- 거짓 음성(거짓 성공)
- 도메인 로직과 강결합
calculateTotalPrice()를 테스트할 경우 테스트는 통과하게 된다.
하지만 무의미한 검증이다. 문제점을 알아보자.
class Payment {
private double price;
public Payment(double price) {
this.price = price;
}
public double calculateTotalPrice() {
return price * 1.1;
}
public double getPrice() {
return price;
}
}
@Test
void 무의미한_테스트() {
// given
Payment sut = new Payment(10_000);
// when
double actual = sut.calculateTotalPrice();
// then
double expected = sut.getPrice() * 1.1; // 로직 노출
assertThat(actual).isEqualTo(expected);
}
도메인 로직 복사로 전혀 검증이 되지 않는다.
결과는 11,000이 나와야 하는데 롤직이 price * 10으로 잘못 로직을 작성해도 테스트는 통과하게 된다.
로직은 바뀌고 결과는 같을 경우 혼란을 준다.
방안
하드 코딩으로 검증한다.
이 코드는 모든 문제를 해결한다.
@Test
void 하드코딩_검증() {
// given
Payment sut = new Payment(10_000);
// when
double actual = sut.calculateTotalPrice();
// then
double expected = 11_000
assertThat(actual).isEqualTo(expected);
}
참고 자료
반응형