2016-04-28 10 views
0

Ich habe einige jUnit4 Test-Klassen, die ich mehrmals mit verschiedenen Parametern in Annotation übergeben möchten. Zum Beispiel wie folgt aus:Machen Sie jUnit Runner Lauf Test Klasse mehrmals mit verschiedenen Parametern

@RunWith(MyClassRunner.class) 
@Params("paramFor1stRun", "paramFor2ndRun") 
class MyTest { 
    @Test 
    public void doTest() {..} 
} 

gehe ich davon aus Runner mir dabei helfen kann, aber ich weiß nicht, wie dies zu implementieren. Könnten Sie bitte beraten?

+0

Neben der gegebenen Antwort möchten Sie vielleicht auch Folgendes sehen: https://github.com/EaseTech/easystest-core – SiKing

Antwort

2
  1. Sie müssen die Anmerkung @RunWith(Parameterized.class) zu Ihrem Test hinzufügen.
  2. Dann einen Konstruktor für Sie Klasse mit den Parametern erstellen Sie benötigen:

    public Test(String pParam1, String param2) { 
        this.param1 = pParam1; 
        this.param2 = pParam2; 
    } 
    
  3. Dann deklarieren Sie eine Methode wie folgt (die eine Reihe von Parametern entsprechend dem Konstruktor bereitstellt):

    @Parameters 
    public static Collection<Object[]> data() { 
        Object[][] data = {{"p11","p12"},{"p21","p22"}} 
        return Arrays.asList(data); 
    } 
    
  4. Sie können Sie testen, tun, die für jede Zeile Ihres Arrays Ausführung wird:

    @Test 
    public void myTest() { 
        assertEquals(this.param1,this.param2); 
    } 
    

Sie haben einen schnelleren Weg, ohne den Konstruktor zu definieren, wenn Sie die Annotation @Parameter(value = N) verwenden, wobei N der Index Ihres Parameterarrays ist.

+0

Gibt es eine Möglichkeit, diese Tests unter verschiedenen Namen auszuführen? Ich meine, in Jenkins muss ich Runs dieser Klassen beobachten wie: MyTest.doTest [paramsFor1stRun], MyTest.doTest [paramsFor2ndRun] – awfun

+0

Beantwortet dieser Thread Ihre Frage? http://stackoverflow.com/questions/650894/changing-names-of-parameterized-tests. Es scheint zu existieren seit JUnit 4.11. – Akah

+0

Vielen Dank, ich habe mich entschieden, meinen eigenen Test-Runner zu erstellen, aber der parametrisierte Runner hat mir sehr geholfen, das zu verstehen. Wahrscheinlich werde ich es in Zukunft verwenden, um meine Tests zu verwalten – awfun