Search

JUnit5 - MethodSource

Tags
java
test
Created
2024/03/24 15:39
Created time
2024/03/24 06:39
category
java

개요

JUnit5에서 반복되는 테스트를 해결하기 위헤 @ParameterizedTest와 @CsvSource를 이용
@ParameterizedTest @CsvSource(value = {"1", "2"}) void test(String input) { }
Java
복사
List 형태의 인자를 넘기기 위해서 @CsvSource를 이용할 수 있는지, 없다면 무엇을 사용해야하는지 탐색
@ParameterizedTest // ?? void test(List<String> input) { }
Java
복사

@MethodSource

JUnit의 Jupiter에서 제공하는 @CsvSource는 문자열을 포함한 원시 타입만 지원
이에 따라 콜렉션을 구성하기 위해선 별도의 인자를 구성해야하고, 이 때 @MethodSource를 사용
@ParameterizedTest @MethodSource("getArguments") void test(List<String> input) { }
Java
복사
@MethodSource에 기재하는 값은 인자를 구성할 메서드의 이름이고, Stream<Arguments>의 반환 타입
Arguments들은 마치 tuple처럼 동작하고, 구성 순서에 맞춰 테스트 메서드의 인자로 주입
private static Stream<Arguments> getArguments() { return Stream.of( Arguments.of(Arrays.asList("1", "2", "3")), Arguments.of(Arrays.asList("4", "5", "6")) ); }
Java
복사

결과