Nested class에서 @Methodsource 사용
- Methodsource에서 사용되는 메서드는 static으로 사용되어야 한다.
- 하지만 Nested 클래스에서 static 메서드를 사용할 수 없는 경우가 있다.(아마 자바 16이전 버전의 경우 불가능한 것으로 보인다.)
- 이 때 테스트 인스턴스를 PER_CLASS로 변경하여 사용하면 static 없이 메서드를 Methodsource에서 사용 가능하다.
@Nested
@DisplayName("Post 엔티티 생성 테스트")
@TestInstance(PER_CLASS)
class PostCreationTest {
@ParameterizedTest
@MethodSource("titleParameter")
@DisplayName("Post 엔티티 생성 실패 테스트")
void testCreationFailCase(String title) {
assertThatThrownBy(() -> new Post(title))
.isInstanceOf(InvalidRequestException.class)
.hasMessage(BAD_REQUEST.getMessage());
}
private Stream<Arguments> titleParameter() {
return Stream.of(null, Arguments.of(""), Arguments.of( " "), Arguments.of("삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!삼색이 너무 귀여워!"));
}
}