인프런 커뮤니티 질문&답변

김병호님의 프로필 이미지

작성한 질문수

스프링 기반 REST API 개발

매개변수를 이용한 테스트

Junit5 ParameterizedTest 를 이용해보았습니다.

20.12.30 22:12 작성

·

582

18

    @ParameterizedTest
    @MethodSource("paramsForTestFree")
    public void testFree(int basePrice, int maxPrice, boolean isFree) {
        // given
        Event event = Event.builder()
                .basePrice(basePrice)
                .maxPrice(maxPrice)
                .build();

        // when
        event.update();

        // then
        assertThat(event.isFree()).isEqualTo(isFree);
    }

    @ParameterizedTest
    @MethodSource("paramsForTestOffline")
    void testOffline(String location, boolean isOffline) {
        // given
        Event event = Event.builder()
                .location(location)
                .build();

        // when
        event.update();

        // then
        assertThat(event.isOffline()).isEqualTo(isOffline);
    }

    private static Stream<Arguments> paramsForTestFree() { // argument source method
        return Stream.of(
                Arguments.of(0,0, true),
                Arguments.of(100, 0, false),
                Arguments.of(0, 100, false),
                Arguments.of(100, 200, false)
        );
    }

    private static Stream<Arguments> paramsForTestOffline() { // argument source method
        return Stream.of(
                Arguments.of("강남", true),
                Arguments.of(null, false),
                Arguments.of("        ", false)
        );
    }

JUNIT5를 이용하시는분들에게 도움이 되었으면 좋겠습니다.

답변 4

0

Tommy님의 프로필 이미지

2022. 11. 16. 15:43

좋은 예제 감사합니다!

 

0

저처럼 헤매고 있으실 분이 있을 까봐 댓글 남깁니다.

저는 현재 Spring boot 2.7.4 사용중인데요,
해당 버전에 의존하고 있는 Junit5 버전은 5.8.2입니다.

따라서 pom.xml에서도

5.8.2 버전의 junit-jupiter-params을 등록해주어야 합니다.

그렇지 않다면 NoSuchMethodError를 겪으실 겁니다.

저처럼 mvnrepository에서 항상 최신거만 가지고 오시는 분들 중 오류가 나시는 분은 버전 확인해보시면 좋을 것 같습니다.

 

0

장원익님의 프로필 이미지

2021. 03. 06. 12:25

감사합니다

찾고있었는데 어떻게 해야하나 고민하고 있었어요 ㅎㅎ

0

백기선님의 프로필 이미지
백기선
지식공유자

2020. 12. 31. 01:34

좋은 예제 공유해 주셔서 감사합니다. 귿귿!