워밍업 클럽 2기 BE 클린코드&테스트코드 4주차 발자국
Practical Testing: 실용적인 테스트 가이드 수강 후 작성한 4주차 발자국입니다.
4주차 강의 정리
Test Double
Dummy : 아무 것도 하지 않는 깡통 객체
Fake : 단순한 형태로 동일한 기능은 수행하나, 프로덕션에서 쓰기에는 부족한 객체
Stub : 테스트에서 요청한 것에 대해 미리 준비한 결과를 제공하는 객체 그 외에는 응답하지 않는다. - 상태 검증 (State Verification)
Spy : Stub이면서 호출된 내용을 기록하여 보여줄 수 있는 객체 일부는 실제 객체처럼 동작시키고 일부만 Stubing 할 수 있다.
Mock : 행위에 대한 기대를 명세하고, 그에 따라 동작하도록 만들어진 객체 - 행위 검증 (Behavior Verification)
BDDMockito
Mockito에서 BDD 스타일에 맞춰서 작성할 수 있게 끔 도와주는 라이브러리
Classicist vs Mockist
Classicist
Mocking 처리를 다 하지 말고 진짜 객체로 최대한의 테스트를 해야 한다는 주의
Mockist
모든 것을 Mocking 위주로 테스트하자. 기능이 보장된 것들은 mocking 처리하고 테스트를 빠르고 간단하게 하자는 주의
더 나은 테스트를 작성하기 위한 구체적 조언
한 문단에 한 주제
테스트는 문서로서의 기능을 한다.
하나의 테스트가 한 문단이라고 생각한다면 하나의 테스트는 하나의 주제만을 가져야 한다.
완벽하게 제어하기
어떤 테스트 환경을 조성하기 위해 완벽하게 제어할 수 있어야 한다.
현재 시간, 랜덤 값, 외부 시스템과 연동하는 경우
테스트 환경의 독립성을 보장하자
테스트 간 결합도가 생기는 경우 독립성을 보장해야 한다.
테스트 간 독립성을 보장하자
두 개 이상의 테스트에 대한 독립성을 보장해야 한다.
한 눈에 들어오는 Test Fixture 구성하기
테스트를 위해 원하는 상태로 고정시킨 일련의 객체
given절에서 생성했던 모든 객체들을 의미한다
Test Fixture 클렌징
deleteAll vs deleteAllInBatch
@ParameterizedTest
하나의 테스트 케이스인데 값을 여러 개로 바꿔보면서 테스트를 하고 싶을 때 사용하면 좋은 테스트
@DynamicTest
어떠 환경을 설정해놓고 이 환경에 변화를 주면서 테스트하고싶을때 사용하면 좋은 테스트
private 메서드는 테스트할 필요가 없다.
테스트에서만 필요한 메서드 중 생성자 등은 프로덕션 코드에 생성해도 좋다.
4주차 회고
이번 워밍업 클럽에 참여하면서 느낀점 한 가지는 '조금이더라도 계속해서 공부하자'이다. 워밍업 클럽에 참여하면서 지식을 많이 얻어갔다고는 못하겠지만 확실한건 공부에 대한 동기부여가 됐다. 이번 테스트 코드 강의를 들으면서 테스트 코드 자체를 처음 작성해보고 JPA도 처음이어서 강의를 보긴 했어도 100퍼센트 이해하진 못했다. 그래서 이번 워밍업 클럽이 끝난 후엔 JPA 스프링 자바에 대한 공부를 더 해야겠다고 생각했다. 부족한 점이 너무너무 많다고 느껴서 퇴근 후에 조금이라도 공부해서 실력을 꾸준히 쌓을 것이다.
댓글을 작성해보세요.