본문 바로가기
Study/Java

[JAVA] given-when-then 관례

by novxerim 2023. 6. 16.

given-when-then은 행위 주도 개발(Behavior-Driven Development, BDD)에서 사용되는 테스트 관례이다. 이 관례는 테스트 케이스를 작성할 때 구조화와 가독성을 높여주는 방식으로 테스트를 구성한다.

given-when-then의 각 부분은 다음과 같이 정의된다.

1) given

  테스트를 위한 사전 조건을 설정하는 단계이다. 테스트 환경을 준비하고, 초기 상태를 설정한다.
  이 단계에서는 테스트에 필요한 객체, 데이터, 상태 등을 사전에 정의한다.

2) when

  테스트 대상의 동작을 실행하는 단계이다.
  주로 어떤 이벤트나 동작을 수행하는 부분이며, 테스트 대상이 실제로 실행되는 시점이다.

3) then

  실행된 결과를 검증하는 단계이다.
  테스트 대상의 동작에 대한 예상 결과를 확인하고, 실제 결과와 일치하는지 검증한다.
  이 단계에서는 테스트 결과를 평가하고 테스트가 성공인지 실패인지 판단한다.

이렇게 given-when-then은 테스트 케이스를 작성할 때 사용되는 문장 구조로, 각 단계를 명확하고 읽기 쉬운 방식으로 표현할 수 있다.

이를 통해 테스트의 의도를 명확하게 전달하고, 테스트 케이스의 가독성과 이해도를 높일 수 있다.

다음은 '자동차의 엔진 동작을 테스트하는 경우' given-when-then 관례를 적용한 테스트 케이스의 예시 코드이다.

@Test
public void testEngineStart() {
    // given
    Car car = new Car();

    // when
    car.startEngine();

    // then
    assertTrue(car.isEngineRunning());
}

위의 예제에서 자동차의 엔진 동작을 테스트하는 testEngineStart 메서드가 given-when-then 관례를 따르고 있다.

given 단계에서는 자동차 객체를 생성하고, when 단계에서는 엔진을 시작시키고, then 단계에서는 엔진이 정상적으로 동작하는지 확인한다.

given-when-then 관례를 사용하면 테스트 케이스의 구조가 명확하게 분리되고, 테스트의 의도를 명확하게 표현할 수 있다.

이를 통해 테스트의 가독성과 유지보수성이 향상되며, 팀 전체가 동일한 양식과 구조를 따르기 때문에 테스트의 일관성이 유지될 수 있다.

댓글