노션 주소

www.notion.so/JUnit5-parameter-3c97b3d4318741bfb4eabb0f6c1f4eb7

 

pom.xml에 디펜던시 추가

<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-params --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-params</artifactId> <version>5.6.2</version> <scope>test</scope> </dependency>

등록 후 메소드 위에 @Test 대신 @ParameterizedTest 등록

Parameter가 1개일 경우

@ValueSource(strings = {"", ""})

@ValueSource(ints= {"", ""})

@ValueSource(boolean= {"", ""})

각자 type에 맞게 적용

Parameter가 2개 이상일 경우

@MethodSource 사용

@MethodSource 사용시 따로 팩토리 메소드를 만들어줘야한다.

private static Stream<Arguments> domainFreeTest() { return Stream.of( Arguments.of(0 , 0 , true), Arguments.of(100 , 0 , false), Arguments.of(0 , 100 , false) ); }

팩토리 메소드와 테스트 메소드의 메소드 이름이 같을경우에

@MethodSource에 따로 팩토리 메소드 이름을 안적어줘도 된다.

하지만 다를 경우엔 @MethodSource에 팩토리 메소드 이름을 적어줘야한다.

Parameter로 Enum을 사용할 경우

  • Enum 전체 사용시

@ParameterizedTest @EnumSource(Month.class) // passing all 12 months void getValueForAMonth_IsAlwaysBetweenOneAndTwelve(Month month) { int monthNumber = month.getValue(); assertTrue(monthNumber >= 1 && monthNumber <= 12); }

  • 특정 enum의 값만 사용시

@ParameterizedTest @EnumSource( value = Month.class, names = {"APRIL", "JUNE", "SEPTEMBER", "NOVEMBER", "FEBRUARY"}, mode = EnumSource.Mode.EXCLUDE) void exceptFourMonths_OthersAre31DaysLong(Month month) { final boolean isALeapYear = false; assertEquals(31, month.length(isALeapYear)); }

  • enum에 조건을 줄 경우

@ParameterizedTest @EnumSource(value = Month.class, names = ".+BER", mode = EnumSource.Mode.MATCH_ANY) void fourMonths_AreEndingWithBer(Month month) { EnumSet<Month> months = EnumSet.of(Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER); assertTrue(months.contains(month)); }

Paramter 에 주입할 소스를 csvfile로 사용할 경우

@ParameterizedTest @CsvFileSource(resources = "/data.csv", numLinesToSkip = 1) void toUpperCase_ShouldGenerateTheExpectedUppercaseValueCSVFile( String input, String expected) { String actualValue = input.toUpperCase(); assertEquals(expected, actualValue); }

  • csv파일 내용

input,expected test,TEST tEst,TEST Java,JAVA

  • 더 다양한 경우는 하단의 첨부한 출처에서 확인

Enum 부터 출처

'개발 > etc' 카테고리의 다른 글

OAUTH - 1  (0) 2020.08.21
네트워크 복습 1  (0) 2020.08.14
Lombok  (0) 2020.07.19
어플리케이션 아키텍처와 객체지향 영상 후기  (0) 2020.06.28
blob  (0) 2020.04.30

+ Recent posts