2017-12-21 7 views
0

Ich versuche parametrisierte Test in JUnit zu schreiben 5ObjectArrayArguments Klasse

@ParameterizedTest 
@ArgumentsSource(TwoParameters.class) 
public void test(int a, int b){ 
    //some assert 
} 

static class TwoParameters implements ArgumentsProvider { 

    @Override 
    public Stream<? extends Arguments> provideArguments(ExtensionContext extensionContext) throws Exception { 
     return Stream.of(
       ObjectArrayArguments.create(1, 2), 
       ObjectArrayArguments.create(3, 4)); 

    } 
} 

Wie Sie sehen können, gibt es Testfunktion, die zwei Parameter übernimmt. Ich sah eine Methode mit @CsvSource und diese Ich versuche, Methode oben zu verwenden, aber ich kann nicht zurückkehren, enthält Strom 2 Parameter für den Test.

ObjectArrayArguments kann nicht aufgelöst werden. Wie importiere ich diese Klasse? Ich versuchte import org.junit.jupiter.params.provider.ObjectArrayArguments;, aber es funktioniert nicht (Intelij sagt ‚lösen kann nicht Symbol ObjectArrayArguments‘)

+0

Können Sie klären, wie "es funktioniert nicht"? Welchen Fehler bekommst du? – Mureinik

+0

@Mureinik Ich bearbeite Frage –

Antwort

2

ObjectArrayArguments kein Mitglied von JUnit ist.

Sie müssen einen Stream von Arguments bereitstellen. Sie können die Factory-Methode Arguments.of(Object...) verwenden, um solche Fälle zu erstellen:

return Stream.of(
     Arguments.of(1, 2), 
     Arguments.of(3, 4) 
    ); 

Für weitere Details lesen Sie bitte die Benutzerführung bei http://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests

Hier ist ein Auszug MethodSource mit:

@ParameterizedTest 
@MethodSource("stringIntAndListProvider") 
void testWithMultiArgMethodSource(String str, int num, List<String> list) { 
    assertEquals(3, str.length()); 
    assertTrue(num >=1 && num <=2); 
    assertEquals(2, list.size()); 
} 

static Stream<Arguments> stringIntAndListProvider() { 
    return Stream.of(
     Arguments.of("foo", 1, Arrays.asList("a", "b")), 
     Arguments.of("bar", 2, Arrays.asList("x", "y")) 
    ); 
} 
+0

Was bedeutet es: http://junit.org/junit5/docs/snapshot/api/org/junit/jupiter/params/provider/ObjectArrayArguments.html –

+1

Ein Fehler in der Matrix, erm JavaDoc . Es ist nicht mehr Teil der API: https://github.com/junit-team/junit5/tree/master/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider – Sormuras

+0

JavaDoc-Paketliste zeigt es auch nicht: http://junit.org/junit5/docs/snapshot/api/org/junit/jupiter/params/provider/package-summary.html – Sormuras

Verwandte Themen