Daily Notebook

[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

반응형

블로그의 정보

배부른코딩로그

배부른코딩로그

활동하기