@DisplayName("ParameterizedTest")
@ParameterizedTest(name = "{index} {displayName} message={0}")
@ValueSource(strings = {"날씨가", "많이", "풀리고", "있네요."})
@EmptySource
@NullSource
void parameterizedTest2(String message) {
System.out.println(message);
}
- 암묵적인 타입 변환
- 명시적인 타입 변환
- SimpleArgumentConverter 상속 받은 구현체 제공
- @ConvertWith
- Arguement가 1개일 때 사용 가능
@DisplayName("ParameterizedTest")
@ParameterizedTest(name = "{index} {displayName} message={0}")
@ValueSource(ints = {10,20,40})
void parameterizedTest3(@ConvertWith(StudyConverter.class) Study study) {
System.out.println(study.getLimit());
}
public static class StudyConverter extends SimpleArgumentConverter {
@Override
protected Object convert(Object source, Class<?> targetType) throws ArgumentConversionException {
assertEquals(Study.class, targetType, "Study 객체로만 변환 가능");
return new Study(StudyStatus.ENDED, Integer.parseInt(source.toString()));
}
}
SimpleArgumentConverter를 상속받은 StudyConverter를 만든 후 @ConvertWith(StudyConverter.class)를 지정해주면 Study 객체로 타입 변환이 가능하다.
- ArgumentsAccessor
- 커스텀 Accessor
- ArgumentsAggregator 인터페이스 구현
- @AggregateWith
@DisplayName("ParameterizedTest")
@ParameterizedTest(name = "{index} {displayName} message={0}")
@CsvSource({"홍길동, 100", "아아아,200"})
void parameterizedTest4(String name, Integer age) {
final Person person = new Person(name, age);
System.out.println(person);
}
@DisplayName("ParameterizedTest")
@ParameterizedTest(name = "{index} {displayName} message={0}")
@CsvSource({"홍길동, 100", "아아아,200"})
void parameterizedTest5(ArgumentsAccessor argumentsAccessor) {
final Person person = new Person(argumentsAccessor.getString(0), argumentsAccessor.getInteger(1));
System.out.println(person);
}
@DisplayName("ParameterizedTest")
@ParameterizedTest(name = "{index} {displayName} message={0}")
@CsvSource({"홍길동, 100", "아아아,200"})
void parameterizedTest5(@AggregateWith(PersonAggregator.class) Person person) {
System.out.println(person);
}
public static class PersonAggregator implements ArgumentsAggregator {
@Override
public Object aggregateArguments(ArgumentsAccessor accessor, ParameterContext context) throws ArgumentsAggregationException {
return new Person(accessor.getString(0), accessor.getInteger(1));
}
}
반드시 public 이거나 InnerClass에서 static 이어야한다.