ν
μ€νΈ μ½λλ₯Ό μμ±νλ€ λ³΄λ©΄, ν κ°μ λ©μλμ λν΄μ μ¬λ¬ κ°μ ν
μ€νΈλ₯Ό μνν΄μΌ νλ κ²½μ°κ° λ°μνλ€.
κ·μΉμ΄ λ§μμ§λ κ²½μ°λ ν
μ€νΈνκ³ μΆμ κ°μ΄ λ§μ κ²½μ° μΌμΌμ΄ ν
μ€νΈ μ½λλ₯Ό μμ±νκΈ°μλ νλ€ μ μλ€.
JUnitμμλ μ¬λ¬ κ°μ ν
μ€νΈλ₯Ό ν λ²μ μμ±νκΈ° μν @ParameterizedTest λΌλ μ΄λ
Έν
μ΄μ
μ μ 곡νλ€.
@Test λμ @ParameterizedTest μ΄λ
Έν
μ΄μ
μ μ μΈν΄μ£Όκ³ , νλΌλ―Έν°λ‘ λκ²¨μ€ κ°λ€μ μ§μ ν΄μ£Όλ©΄ λλλ°, νλΌλ―Έν°λ₯Ό λ겨주λ μ΄λ
Έν
μ΄μ
μ΄ μ¬λ¬ μ’
λ₯κ° μλ€.
νλμ ν
μ€νΈμ νλμ μΈμλ₯Ό λ겨주λ λ°©λ²
ν
μ€νΈμ μ£Όμ
ν κ°μ μ΄λ
Έν
μ΄μ
μ λ°°μ΄λ‘ μ§μ νλ€.
ν
μ€νΈλ₯Ό μ€ννλ©΄ λ°°μ΄μ μννλ©΄μ, ν
μ€νΈ λ©μλμ μΈμλ‘ λ°°μ΄μ μ μ₯λ κ°λ€μ μ£Όμ
νμ¬ ν
μ€νΈνλ€.
@ValueSourceμ μ¬μ©ν μ μλ μλ£ν
byte, short, int, long, float, double, char, boolean
String, Class
@ ParameterizedTest
@ ValueSource (strings = {"" , " " })
void μ μ λ€μμΌλ‘_User_μμ±νκΈ° (String userName ) {
assertThatThrownBy (() -> new User (userName ))
.isInstanceOf (IllegalArgumentException .class );
}
input κ°κ³Ό expect (κΈ°λκ°) κ°μ μΈμλ‘ λ°κ³ μΆμ κ²½μ° μ¬μ©νλ€.
value λ§€κ°λ³μλ‘ κ°μ λ겨주λλ°, μ΄ λ "{input},{expect}"μ ννλ‘ κ΅¬λΆμκ° μλ λ¬Έμμ΄λ‘ μ
λ ₯μ λ£μ΄μ€λ€.
κΈ°λ³Έ ꡬλΆμλ μ½€λ§(',')μ΄μ§λ§, delimiter κ°μ μ§μ μ μν΄μ 컀μ€ν
ꡬλΆμλ₯Ό μ¬μ©ν μλ μλ€.
delimiter ꡬλΆμλ Stringμ΄ μλ char κ°
@ CsvSource (value = {"1:2" , "3:4" }, delimiter = ':' )
Stringμ ꡬλΆμλ‘ λ£κ³ μΆλ€λ©΄ delimiterString λ§€κ°λ³μλ₯Ό μ΄μ©ν΄ κ°μ λ겨μ€μΌ νλ€.
@ CsvSource (value = {"1//2" , "3//4" }, delimiterString = "//" )
@ ParameterizedTest
@ CsvSource (value = {"1,2" , "2,4" , "3,6" })
void 2 _κ³±νκΈ°_ν
μ€νΈ (int input , int expected ) {
assertThat (multiplyBy2 (input )).isEqualTo (expected );
}
@NullSource, @EmptySource, @NullAndEmptySource
@NullSourceλ ν
μ€νΈ μΈμλ‘ nullμ, @EmptySourceλ λΉ κ°μ, @NullAndEmptySourceλ nullκ³Ό λΉ κ°μ λͺ¨λ μ£Όμ
νλ€.
μ΄ λ μμ κ° (byte, short, int, long, float, double, char, boolean) μ nullμ΄ λ€μ΄κ° μ μμΌλ―λ‘ λ©μλμ μΈμκ° μμ κ°μ΄λΌλ©΄ @NullSource, @NullAndEmptySourceλ μ¬μ© λΆκ°λ₯νλ€.
@NullSourceμ @EmptySourceλ₯Ό λ λ€ μ¬μ©ν κ²μ @NullAndEmptySourceμ κ°λ€.
@ValueSourceμ κ°μ΄ μ¬μ© κ°λ₯νλ€.
@ ParameterizedTest
@ NullAndEmptySource
@ ValueSource (strings = {"" , " " })
void μ μ λ€μμΌλ‘_User_μμ±νκΈ° (String name ) {
assertThatThrownBy (() -> new User (name ))
.isInstanceOf (IllegalArgumentException .class )
}
Enum ν΄λμ€μ λͺ¨λ κ°μ μ¬μ©νλ €λ©΄ @EnumSource μμ Enum ν΄λμ€λ§ μ λ¬ν΄μ£Όλ©΄ λκ³ , νΉμ κ°λ§ νμν κ²½μ° valueμ Enum ν΄λμ€λ₯Ό λ£μ΄μ£Όκ³ , namesμ μ νν κ°μ μ΄λ¦μ μ λ¬ν΄μ£Όλ©΄ λλ€.
μ΄ λ namesκΉμ§ κ°μ λ£μΌλ©΄ μΆκ°λ‘ mode κ°μ λ£μ΄μ€ μ μλ€.
μ§μνλ modeλ λ€μκ³Ό κ°λ€.
INCLUDE
EXCLUDE
MATCH_ALL
MATCH_ANY
@ ParameterizedTest
@ EnumSource (value = Color .class , names = {"PINK" , "CORAL" })
void μμμ_λ² μ΄μ€_μμ_ν
μ€νΈ (Color color ) {
assertThat (color .getBaseColor ()).isEqualTo (Color .RED );
}
μ μ΄λ
Έν
μ΄μ
λ€μ 볡μ‘ν Objectλ₯Ό μ λ¬νλ κ²μ λΆκ°λ₯νλ€.
@MethodSourceλ λ©μλλ₯Ό μΈμλ‘ μ λ¬ν΄μ£Όλ©΄ 볡μ‘ν μΈμλ₯Ό μ λ¬νλ κ²μ΄ κ°λ₯νλ€.
@ ParameterizedTest
@ MethodSource ("provideBlankStrings" )
void λ¬Έμμ΄_isBlank_ν
μ€νΈ (String input , boolean expected ) {
assertThat (input .isBlank ()).isEqualTo (expected );
}
private static Stream <Arguments > provideBlankStrings () {
return Stream .of (
Arguments .of ("" , true ),
Arguments .of (" " , true ),
Arguments .of ("not blank" , false )
);
}
provideBlankStrings()λΌλ λ©μλλ₯Ό μ μν λ€, ν΄λΉ λ©μλλ₯Ό @MethodSourceλ‘ ν
μ€νΈ λ©μλμ λ겨주λ λ°©μ
@MethodSourceμ μμ±νλ λ©μλ μ΄λ¦μ μΈμλ‘ μ 곡νλ €λ λ©μλ μ΄λ¦κ³Ό κ°μμΌ νλ€.
μΈμλ‘ μ λ¬νλ €λ λ©μλλ static λ©μλμ¬μΌ νλ€.
@MethodSourceμ λ©μλ μ΄λ¦μ μμ±ν΄μ£Όμ§ μμΌλ©΄ JUnitμ΄ ν
μ€νΈ λ©μλ λ€μκ³Ό κ°μ λ©μλλ₯Ό μ°Ύμ μΈμλ‘ μ 곡νλ€.