@ ParameterizedTest
car il peut être géré. @Test
public void sample1() {
assertThat("a".length()).isEqualTo(1);
}
@Test
public void sample2() {
assertThat("b".length()).isEqualTo(1);
}
(Je n'écrirai pas un tel test, mais comme échantillon ...)
--Lors de l'utilisation
@ParameterizedTest
@ValueSource(strings = {"a", "b"})
public void sample(String string) {
assertThat(string.length()).isEqualTo(1);
}
Vous pouvez combiner plusieurs tests simplement en ajoutant un paramètre à l'argument de @ ValueSource
comme ceci.
Il existe plusieurs façons de spécifier les paramètres, je vais donc les présenter ci-dessous.
@ValueSource
String
--Peut gérer les caractères vides et les caractères vides, mais ne peut pas gérer la valeur null
--Si vous souhaitez gérer null, utilisez @ MethodSource
décrit plus loin.
@ParameterizedTest
@ValueSource(strings = {"a", "b", "c"})
public void string(String value) {
System.out.println("string: " + value);
}
Résultat d'exécution
string: 'a'
string: 'b'
string: 'c'
string: ''
string: ' '
int
@ParameterizedTest
@ValueSource(ints = {1, 2 ,3})
public void ints(int value) {
System.out.println("ints: " + value);
}
Résultat d'exécution
ints: 1
ints: 2
ints: 3
@CsvSource
String
soit ʻint`. @ParameterizedTest
@CsvSource({"1, val1", "2, val2", "3, val3"})
public void csv(int num, String value) { //Recevoir un nombre comme un entier
System.out.println("num: '" + num + "', value: '" + value + "'");
}
@ParameterizedTest
@CsvSource({"1, val1", "2, val2", "3, val3"})
public void csv(String num, String value) { //Recevoir un nombre sous forme de chaîne
System.out.println("num: '" + num + "', value: '" + value + "'");
}
Résultat d'exécution
num: '1', value: 'val1'
num: '2', value: 'val2'
num: '3', value: 'val3'
@ParameterizedTest
@CsvSource({"Caractères vides, ''", "Caractère vierge, ' '", "null, "})
public void csv(String type, String value) {
System.out.println(type + ": '" + value + "'");
}
Résultat d'exécution
Caractères vides: ''
Caractère vierge: ' '
null: 'null'
@EnumSource
--Peut être utilisé lorsque vous souhaitez tester en fonction de la définition de la classe enum
--Si vous spécifiez names
ou mode
, vous pouvez inclure, exclure, etc.
--mode est par défaut ʻINCLUDE`
Classe d'énumération à utiliser
enum SampleEnum {
ENUM1,
ENUM2,
ENUM3
}
Tous les cas
@ParameterizedTest
@EnumSource(SampleEnum.class)
public void enumSource(SampleEnum value) {
System.out.println("enum: " + value);
}
Résultat d'exécution
enum: ENUM1
enum: ENUM2
enum: ENUM3
include
@ParameterizedTest
@EnumSource(value = SampleEnum.class, names = {"ENUM1", "ENUM2"})
public void enumInclude(SampleEnum value) {
System.out.println("enum: " + value);
}
Résultat d'exécution
enum: ENUM1
enum: ENUM2
exclude
@ParameterizedTest
@EnumSource(value = SampleEnum.class, names = {"ENUM1", "ENUM2"}, mode = EnumSource.Mode.EXCLUDE)
public void enumExclude(SampleEnum value) {
System.out.println("enum: " + value);
}
Résultat d'exécution
enum: ENUM3
@MethodSource
Stream, Iterable, Iterator
à passer en argument @ParameterizedTest
@MethodSource("source")
public void methodSource(String value) {
System.out.println("value: " + value);
}
public static Stream<String> source() {
return Stream.of("string1", "string2", null);
}
Résultat d'exécution
value: string1
value: string2
value: null
Recommended Posts