-
[TDD] 예제 테스트 작성개발공부/JAVA 2022. 10. 4. 22:23
기본 테스트 코드 작성 흐름
Given - When - Then (BDD 스타일의 mokito)
- given : 특정 전문을 넣으면
- when : 가입프로세스가 진행되고
- then : 성공 결과가 나올 것이다
Given
- 어떤 상황이 주어지면~ (가정)에 해당하는 부분
- 어떤 결과가 나올 것인지 stubbing(when)을 통해 행동을 지정해준다
When
- 어떤 상황이 일어나면 ~ (실행)에 해당하는 부분
- 테스트 하려는 서비스 코드 실행
- 실제 행동을 보여주면 됨
Then
- 어떤 결과가 나올 것이다 (결과)에 해당하는 부분
- assert나 verify를 통해 실제 그 결과가 제대로 나왔는지 검증하는 부분
가입 프로세스 유닛 테스트 코드
@Slf4j @SpringBootTest @TestMethodOrder(MethodOrderer.OrderAnnotation.class) @ExtendWith(MockitoExtension.class) public class AddTest { @BeforeAll static void makeRequest() { //테스트 전문 객체 } @Test @Order(1) @DisplayName("[가입] 1. 성공") void 가입_성공() { } @Test @Order(2) @DisplayName("[가입] 2. 실패 : SEQ 조회 오류") public void 가입_실패_SEQ_오류() { } @Test @Order(3) @DisplayName("[가입] 3. 실패 : DB insert 오류") public void 가입_실패_DB_insert_오류() { } @Test @Order(4) @DisplayName("[가입] 4. 실패 : ADD 전문 오류") public void 가입_실패_ADD_전문_오류() { } }
+) 코드 내용은 공개할 수 는 없지만 사실 저런 테스트 케이스는 다르지만 안의 given-when-then의 내용은 크게 다르지 않아
왜 작성하는지 이해가 안됐다
예를 들어 3의 DB insert 오류 나 4의 ADD 전문 오류는 결국 실패의 결과 동작은 똑같은데 굳이 중복되서 작성해야하나? 이런 맥락에서!
그렇지만 이렇게 각각의 테스트 케이스를 잘 작성해 놔야 나중에 테스트 코드 기반의 API 명세를 작성할 수도 있기 때문에
중복되는 내용이더라 하더라도 모두 작성하는게 좋다 !
'개발공부 > JAVA' 카테고리의 다른 글
input/outputstream 활용한 PDF 다운로드 (0) 2023.02.24 log4j / logback / log4j2 정리 (0) 2022.11.09 [TDD] BDD 스타일의 mockito API (0) 2022.09.28 [TDD] Mock 객체 생성 및 구현 (0) 2022.09.26 [TDD] mokito를 이용한 유닛 테스트 (0) 2022.09.25