인프런의 "더 자바, 애플리케이션을 테스트하는 다양한 방법”을 보고 정리한 것임
@DisplayName("반복 테스트")
@RepeatedTest(value = 10, name = "{displayName}, {currentRepetition} / {totalRepetitions}")
void repeatTest(RepetitionInfo info) {
System.out.println("test " + info.getCurrentRepetition() + "/" + info.getTotalRepetitions());
}
@DisplayName("Parameter 반복 테스트")
@ParameterizedTest(name = "{index} {displayName} stringVal = {0}")
@ValueSource(strings = {"11111111", "22222222222", "3333333333", "444444444444"})
void stringValueSourceTest(String s) {
System.out.println(s);
}
@DisplayName("Custom(domain 객체) Parameter 반복 테스트")
@ParameterizedTest(name = "{index} {displayName} stringVal = {0}")
@ValueSource(ints = {10, 20, 30})
void convertValueSourceTest(@ConvertWith(StudyConverter.class) Study study) {
System.out.println(study.getLimit());
}
// public 클래스 혹은 static 인너클래스로 작성해야함
static class StudyConverter extends SimpleArgumentConverter {
@Override
protected Object convert(Object source, Class<?> targetType) throws ArgumentConversionException {
assertEquals(Study.class, targetType, "Can only convert to Study");
return new Study(Integer.parseInt(source.toString()));
}
}
@DisplayName("Parameter 반복 테스트")
@ParameterizedTest(name = "{index} {displayName} stringVal = {0}")
@CsvSource({"10, '자바 스터디'", "20, '스프링'"})
void convertCvsTest(ArgumentsAccessor argumentsAccessor) {
Study study = new Study(argumentsAccessor.getInteger(0),
argumentsAccessor.getString(1));
System.out.println(study);
}
@DisplayName("Parameter 반복 테스트")
@ParameterizedTest(name = "{index} {displayName} stringVal = {0}")
@CsvSource({"10, '자바 스터디'", "20, '스프링'"})
void convertCvsTest(@AggregateWith(StudyArgregator.class) Study study) {
System.out.println(study);
}
// public 클래스 혹은 static 인너클래스로 작성해야함
static class StudyArgregator implements ArgumentsAggregator {
@Override
public Object aggregateArguments(ArgumentsAccessor accessor, ParameterContext context) throws ArgumentsAggregationException {
Study study = new Study(accessor.getInteger(0),
accessor.getString(1));
return study;
}
}