2024.06.12.수.TIL 내일배움캠프 40일차 <Given-When-Then>

김기남·2024년 6월 12일
0
post-thumbnail

오늘은 Spring 심화주차에 들어가면서 언급된
Given-When-Then 패턴에 대해서 알아보았습니다.

Given-When-Then 패턴이란?

Given-When-Then 패턴은 Test Code 스타일을 표현하는 방식을 뜻하며, 준비-실행-검증 이라고 쉽게 이해하면 됩니다.

Given

  • 테스트 하고자하는 대상을 실제로 실행하기 전에 테스트에 필요한 값(상태)을 미리 선언해 둡니다.
  • 테스트에 사용하는 변수, 입력 값 등을 정의하거나, Mock 객체를 정의하는 구문도 Given에 포함시킵니다.

When

  • 테스트 하고자하는 대상을 실제로 실행 시킵니다.
  • When은 가장 중요한 구문이지만 하나의 메서드만 수행하는 것이 바람직합니다.

Then

  • 어떤 특정한 행동(테스트 대상 실행) 때문에 발생할거라고 예상되는 결과에 대해 예측하고 맞는지 확인합니다.
class CalculatorTest {

    Calculator calculator;

    @BeforeEach
    void setUp() {
        calculator = new Calculator();
    }

    @Test
    @DisplayName("계산기 연산 성공 테스트")
    void test1() {
        // given
        int num1 = 5;
        String op = "/";
        int num2 = 2;

        // when
        Double result = calculator.operate(num1, op, num2);

        // then
        assertNotNull(result);
        assertEquals(2.5, result);
    }

    @Test
    @DisplayName("계산기 연산 실패 테스트 : 분모가 0일 경우")
    void test1_1() {
        // given
        int num1 = 5;
        String op = "/";
        int num2 = 0;

        // when
        Double result = calculator.operate(num1, op, num2);

        // then
        assertNull(result);
    }

    @Test
    @DisplayName("계산기 연산 실패 테스트 : 연산자가 잘못됐을 경우")
    void test1_2() {
        // given
        int num1 = 5;
        String op = "?";
        int num2 = 2;

        // when - then
        IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> calculator.operate(5, "?", 2));
        assertEquals("잘못된 연산자입니다.", exception.getMessage());
    }
}

출처 :
Spring Master - 5주차 강의자료 +
https://brunch.co.kr/@springboot/292

profile
새로운 시작~!

0개의 댓글