[JUnit5] @ParameterizedTest - 반복되는 테스트들 한번에 돌리기

민지·2023년 8월 1일
0

Java

목록 보기
8/20
post-custom-banner

@ParameterizedTest

테스트 코드를 짜다 보면 같은 로직의 테스트가 늘어난다.
JUnit에는 이렇게 여러 개의 테스트를 한번에 작성하기 위한 @ParameterizedTest 라는 어노테이션을 제공한다. 기본적인 사용 방법은 @Test 대신 @ParameterizedTest 라는 이 annotation을 추가하는 것을 제외하고는 다른 테스트와 동일하다.

이 때 파라미터로 넘겨줄 값들을 지정해주어야 하는데, 이 역시 어노테이션을 사용해서 테스트에 주입해줄 수 있다.

@DisplayName("덧셈 연산을 수행한다.")
    @Test
    void additionTest() {
        int result = Calculator.calculator(1, "+", 2);

        assertThat(result).isEqualTo(3);
}

@DisplayName("뺄셈 연산을 수행한다.")
	@Test
    void subtractionTest() {
        int result = Calculator.calculator(1, "-", 2);

        assertThat(result).isEqualTo(-1);
}

@MethodSource

method를 인수로 전달해주면 복잡한 인수를 전달할 수 있다.

@DisplayName("덧셈 연산을 수행한다.")
    @ParameterizedTest
    @MethodSource("formulaAndResult")
    void calculateTest(int operand1, String operator, int operand2, int result) {
        int calculatorResult = Calculator.calculator(operand1, operator, operand2);

        assertThat(calculatorResult).isEqualTo(result);
    }

    private static Stream<Arguments> formulaAndResult() {
        return Stream.of(
                arguments(1, "+", 2, 3),
                arguments(1, "-", 2, -1),
                arguments(4, "*", 2, 8),
                arguments(4, "/", 2, 2)
        );
    }
profile
개발일지
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 8월 1일

좋은 정보 얻어갑니다, 감사합니다.

답글 달기