오늘은 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