테스트에서 실제로 HTTP 호출을 해서는 안됩니다. 그 이유는
- 실제 호출에 대한 테스트는 나머지 대다수의 빠른 테스트들에 비해 속도가 느릴 것입니다.
- HTTP API가 항상 가용한지 보장할 수 없습니다. 통제 밖입니다.
스텁: 테스트 용도로 하드 코딩한 값을 반환하는 구현체.
의존성 주입: 테스트 시, 스텁을 주입하여 HTTP API 호출에 대한 응답으로 사용합니다.
의존성을 주입할 수 있도록 설계를 변경함으로써 테스트를 작성할 수 있었습니다. 의존성을 주입하는 방법으로는 생성자 주입, 세터 메서드, 팩토리 메서드 오버라이드, 추상 팩토리 등이 있고, 구글 주스나 스프링 같은 도구를 사용할 수도 있습니다.
목을 올바로 사용하고 있는지 확인하기 위해 스스로에게 던져야하는 질문들이 있습니다.
- 목이 프로덕션 코드의 동작을 올바르게 묘사하고 있는가?
- 프로덕션 코드는 생각하지 못한 다른 형식으로 반환하는가?
- 프로덕션 코드는 예외를 던지는가? null을 반환하는가?
목을 사용한다는 건, 직접 테스트되지 않는 프로덕션 코드가 있다는 뜻입니다. 이 때문에 단위테스트 커버리지에 구멍이 생길 수 있는데, 통합 테스트를 통해 이 구멍을 막아야합니다.
자바와 JUnit을 활용한 실용주의 단위 테스트
단위 테스트 작성 이유부터 테스트 가이드라인, 목 객체 사용법, 자동화된 단위 테스트, 리팩토링까지 단위 테스트의 핵심 내용을 설명한다. 또한, 단위 테스트를 단계별로 실습할 수 있게 구성
www.aladin.co.kr
실용주의 단위테스트. 9장. 더 큰 설계 문제. (0) | 2021.11.27 |
---|---|
실용주의 단위 테스트. 8장. 깔끔한 코드로 리팩토링하기. (0) | 2021.06.22 |
실용주의 단위 테스트. 7장. 경계 조건: CORRECT 기억법. (0) | 2020.01.01 |
실용주의 단위 테스트. 6장. Right-BICEP: 무엇을 테스트할 것인가? (0) | 2019.11.17 |
실용주의 단위 테스트. 5장. 좋은 테스트의 FIRST 속성. (0) | 2019.11.10 |
댓글 영역