상세 컨텐츠

본문 제목

실용주의 단위테스트. 10장. 목 객체 사용

TIL/실용주의 단위 테스트

by box-jeon 2021. 11. 28. 18:55

본문

테스트 도전 과제

테스트에서 실제로 HTTP 호출을 해서는 안됩니다. 그 이유는

- 실제 호출에 대한 테스트는 나머지 대다수의 빠른 테스트들에 비해 속도가 느릴 것입니다.

- HTTP API가 항상 가용한지 보장할 수 없습니다. 통제 밖입니다.

 

번거로운 동작을 스텁으로 대체

스텁: 테스트 용도로 하드 코딩한 값을 반환하는 구현체.

의존성 주입: 테스트 시, 스텁을 주입하여 HTTP API 호출에 대한 응답으로 사용합니다.

 

테스트를 지원하기 위한 설계 변경

의존성을 주입할 수 있도록 설계를 변경함으로써 테스트를 작성할 수 있었습니다. 의존성을 주입하는 방법으로는 생성자 주입, 세터 메서드, 팩토리 메서드 오버라이드, 추상 팩토리 등이 있고, 구글 주스나 스프링 같은 도구를 사용할 수도 있습니다.

 

목을 올바르게 사용할 때 중요한 것

목을 올바로 사용하고 있는지 확인하기 위해 스스로에게 던져야하는 질문들이 있습니다.

- 목이 프로덕션 코드의 동작을 올바르게 묘사하고 있는가?

- 프로덕션 코드는 생각하지 못한 다른 형식으로 반환하는가?

- 프로덕션 코드는 예외를 던지는가? null을 반환하는가?

목을 사용한다는 건, 직접 테스트되지 않는 프로덕션 코드가 있다는 뜻입니다. 이 때문에 단위테스트 커버리지에 구멍이 생길 수 있는데, 통합 테스트를 통해 이 구멍을 막아야합니다.

 

 

자바와 JUnit을 활용한 실용주의 단위 테스트

단위 테스트 작성 이유부터 테스트 가이드라인, 목 객체 사용법, 자동화된 단위 테스트, 리팩토링까지 단위 테스트의 핵심 내용을 설명한다. 또한, 단위 테스트를 단계별로 실습할 수 있게 구성

www.aladin.co.kr

 

관련글 더보기

댓글 영역