테스트코드란 내가 작성한 메서드가 실제로 재대로 동작하는지 테스트 하는 코드이다.
TDD란 테스트가 주도하는 개발이다.
실패하는 테스트코드 작성 -> 테스트가 성공하는 프로덕션코드 작성 -> 테스트가 성공하면 프로덕션 코드를 리팩토링 하는식으로 개발을 한다.
나는 교육이나 간단한 java application을 통하여 tdd를 진행을 하였다.
일단 도메인을 이해하고 개발하려면 데스트코드는 선택이 아닌 필수인것 같다.
난 전 회사에서 테스트코드를 짜본적이 없다. 인턴으로 1달반정도 있을때는 ci와 테스트코드를
다 사용해봤지만 정작 오래동안 있던 곳에서는 그런적이 없었다.. 정말 위에 글처럼 테스트시
시간이 어마어마하게 걸린다. 보통 서비스하는 곳마다 다르지만 기본적으로 업체당 화면이 100개
이상은 존재했었다. 정말 많은 업체는 3~400개도 되어있었던것 같다.
테스트코드에 익숙하지 않으면 시간이 더 오래걸릴 수도 있겠지만 배포하고 오류가나거나 버그발생시 문제되는것 보다 100배 아닌 1000배 이상의 효과가 발생된다.
기본적으로 패키지 구조는 main과 test로 나뉘어진다.(이클립스도 동일)
해당 테스트 패키지에서 마우스 우클릭 -> 클래스명+Test.class로 테스트 코드를 작성한다.
(인텔리제이기준 ctrl + shift + t를 누르면 테스트클래스를 생성 할 수 있다.)
책은 junit 4.x버전을 기준으로 작성되어 있지만 나는 5.x버전으로 테스트 코드를 작성하였다.
의존성이 주입되는 부분에서는 @springbootTest나 @webMvcTest등 테스트 기반에 대한 어노테이션을 정의 해야한다.
그리고 테스트 코드에서는 @Test라는것을 명시하여 해당 메서드가 테스트코드에 대한 메서드인지 작성을 해야 한다.
Junit 4버전에서는 @RunWith(SpringRunner.class)가 명시되어야 한다.
그리고 junit5번에는 더이상 사용하지 않고 @ExtendWith를 사용하게 된다.
그리고 지금 책에서의 테스트코드는 별 차이가 없어서 무난하게 5버전을 사용해도 무리가 없었다.
mockMvc란 서블릿 컨테이너의 구동없이 mvc환경에 모의 http 서블릿 요청을 전송하는 기능을 제공하는 유틸리티 클래스이다.
controller를 테스트할때 사용한다.
이책에 앞서 소개가 된이유는 중요하다고 생각되기 때문이다. 솔직히 이 책을보면서 구축하면서
테스트코드를 안짜도 프로그램을 실행된다. 하지만 정작 오류가 발생시 디버깅 포인트부터
난감할 것이다. 단순 튜토리얼이라고 따라하기보다는 코드를 작성할때 테스트코드를 작성하는 습관을 가지는 것이 중요하다.
혹시 어떤 책인지 알 수 있을까요 ?