[TIL] JUnit 5 계층 구조의 테스트 작성엔 @Nested
by 배부른코딩로그테스트 코드에 제약(조건)을 주어서 구조화하면 더 읽기 쉽다. 어떤 제약을 줘서 어떻게 구조화하라는 말일까? @Nested 어노테이션을 사용하기 전에 TDD와 BDD 패턴에 대해서 간단히 이해할 필요가 있다. TDD는 테스트 주도 개발로 간단하게 모든 코드에 테스트 코드를 작성하는 방식을 의미한다. 그러면 BDD는 무엇일까?
BDD란 무엇일까?
Behavior Driven Development를 BDD라고 한다. 영어를 해석해보면, 행동 주도 개발이다. 테스트 하는 대상의 행동(행위)을 더 자세하고 섬세하게 작성하는 개발 방법이다. BDD는 궁극적으로 테스트 케이스 자체가 요구 사항이 되도록 만들고자 하는 목적을 가지고 있다.
TDD와 BDD 모두 테스트를 작성하는 패턴인테, 서로 다른 점은 무엇인지 간단히 정리해보자.
- TDD
- 코드에 집중된 테스트 작성.
- 비즈니스 요구 사항에 따른 로직 파악이 어려움.
- 추후 코드 수정시, 비용이 상대적으로 클 수 있음.
- BDD
- 테스트 대상 행위(행동)에 집중된 테스트 작성.
- 대상의 의도와 목적을 구체적으로 작성하기 때문에 요구 사항 파악이 쉬움.
BDD의 기본 패턴
하나의 테스트 시나리오에 대해 Given - When - Then 구조를 가지는 것이 기본적인 BDD 패턴이라고 한다.
- Given: 시나리오 진행에 필요한 값 설정.
- When: 시나리오 진행에 필요한 조건 명시.
- Then: 시나리오 완료 시, 보장해야 하는 결과값 명시.
@Nested
JUnit5부터 @Nested를 통해 계층 구조의 테스트 코드를 작성할 수 있게 되었다. 계층 구조의 테스트 코드는 Java의 중첩 클래스를 사용하여 만들 수 있다. 이를 이용하여 BDD 패턴을 도입할 수 있다. 이를 도입하면 테스트가 어떻게 바뀌게 되는게 살펴보자.
- 출처 -
[공식문서] https://junit.org/junit5/docs/current/user-guide/
[참고자료] https://helloworld.kurly.com/blog/try-bdd/#역시-페어보다는-몹-들어는-보았나-몹-프로그래밍
[참고자료]https://johngrib.github.io/wiki/junit5-nested/
2021.05.21(금) TIL
'TIL(Today I Learned)' 카테고리의 다른 글
[TIL] 클린 아키텍쳐(The Clean Architecture) (0) | 2021.05.27 |
---|---|
[TIL] IntelliJ cannot resolve symbol 에러 해결 (0) | 2021.05.26 |
[TIL] JUnit 5 사용자 정의 테스트 명명엔 @DisplayName (0) | 2021.05.21 |
[TIL] Java String, StringBuffer, StringBuilder 뽀개기 (1) | 2021.05.18 |
[TIL] String 이어붙이기 (0) | 2021.05.14 |
블로그의 정보
배부른코딩로그
배부른코딩로그