test 파트에 대해 알아보다가 이것저것 끄적여본다...
테스트 방식에 대해 알아보면서 ‘Clean Code’ 책을 잠깐 보았습니다. 간단하게 나와있는 만큼 간략하게 정리했습니다.
실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다.
컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.
현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.
→ 컴파일이 되는 실패 코드(expected answer가 다른)를 만든 뒤 그 코드를 통과하기 위한 코드를 작성하는 것
깨끗한 테스트가 따르는 규칙
코드스테이츠 40기 프로젝트 발표 영상을 보던 중 백엔드 팀장분이 발표를 하시는데, TDD 방식으로 개발을 했다고 하셨습니다. 대략 660개 정도의 테스트 코드가 만들어졌다고 하는데 슬쩍 들여다봐도 괜찮지 않을까 싶어서 가져왔다.
-> 나중에 이 링크한번 참고 해보자
API 계층과 서비스 계층을 쪼개 각각 슬라이스 테스트를 진행함
→ Mock 객체를 사용해 계층별로 끊어서 테스트 함.
( 슬라이스 테스트 안에서도 단위 테스트로 나누어서 한 것도 있는 것 같고… 복잡하네…)
에러..?
테스트를 진행하면서 TutoringService에 관련된 무언가를 가짜 객체로 만들었다가 에러가 났었다.
개념이 제대로 잡히지 않았을 때라 그랬는데, 만약 무언가 값을 고정하고 싶다면 tutoringService로 들어가 그 안에 들어있는 tutoringRepository와 같은 것들을 mock 데이터로 만들어 주어야 한다.
Spring Rest Docs
Swagger
장점 : API를 테스트 해볼 수 있는 화면을 제공하고, 적용하기 쉽다
단점 : 실제 제품 코드에 어노테이션을 추가하고 코드를 추가해야 하며, 동기화가 안될 수도 있다
API 문서의 목적은 개발하는 스펙을 정의하는 것
→ Swagger는 API 동작을 테스트하는 용도에 특화되어 있고, Spring Rest Docs는 깔끔 명료한 문서를 만들 수 있으므로 문서를 제공하기 위함으로는 Spring Rest Docs가 낫다.
라고 이분이 말하셨습니다. (이 글 좋습니다.. 무려 우형)
이번 프로젝트에서 JUNIT5를 통하여 테스트를 진행하였다
Junit4와는 다르게 Junit5는 세 개의 서브 프로젝트로 이루어져있다.
Junit Platform
Junit Jupiter
Junit Vintage
차이점 참고