2017-01-25 5 views
0

Ich versuche, einen dynamischen JUnit-Test zu erstellen (Suche Dateien im Verzeichnis, passende Input/Erwartete Datei finden, den richtigen XQuery-Transformator verwenden und die Testdatenquellordner in das richtigen Verzeichnis setzen.)Wie kann ich verschiedene Testdaten für denselben JUnit-Test bereitstellen?

ArrayList<Tuple4> t = findfiles(new String[]{"**/*.xq**"}, "D:/PROJEKTE/UDG/OSB-Projekte/"); //Routine to put these information into my Array 

for(Tuple4 sub : t){ 
    String inp = (String) sub.c; 
    if(inp.contains("DiagFisArchiveId INP HDR")){ 
     System.out.println("A: "+ sub.a + " B: " + sub.b + " C: "+ sub.c+ " D: "+sub.d); 
    new XQueryTester((String)sub.a,(String)sub.b).testHeader((String)sub.c,(String)sub.d); 
    } else if(inp.contains("PAY")){ 
     System.out.println("A: "+ sub.a + " B: " + sub.b + " C: "+ sub.c+ " D: "+sub.d); 

     new XQueryTester((String)sub.a,(String)sub.b).testBody((String)sub.c,(String)sub.d); 

    } 
} 

Wenn diese laufen bekomme ich die folgende Ausgabe in meiner Konsole:

A: src\conf\IsiAivResponse_XqueryTransformer\IsiAivResponse.xquery B: D:\PROJEKTE\UDG\OSB-Projekte\konf_uss_aiv\test\xquery-testdata\ C: IsiAivResponse IsiAivResponse INP PAY.xml D: IsiAivResponse IsiAivResponse EXP PAY.xml 
A: src\conf\EsmArsRequest_XqueryTransformer\ArsBuilder.xquery B: D:\PROJEKTE\UDG\OSB-Projekte\konf_uss_ars\test\xquery-testdata\ C: ArsBuilder EsmArsRequest INP PAY.xml D: ArsBuilder EsmArsRequest EXP PAY.xml 
A: src\conf\IsiArsHeader_XqueryTransformer\headerSetter.xq B: D:\PROJEKTE\UDG\OSB-Projekte\konf_uss_ars\test\xquery-testdata\ C: headerSetter IsiArsHeader INP PAY.xml D: headerSetter IsiArsHeader EXP HDR.xml 
A: src\conf\IsiArsResponse_XqueryTransformer\response.xq B: D:\PROJEKTE\UDG\OSB-Projekte\konf_uss_ars\test\xquery-testdata\ C: response IsiArsResponse INP PAY.xml D: response IsiArsResponse EXP PAY.xml 
... 

aber es sagt, ich lief nur 1 Test

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 30.928 sec - in XQueryTest 

gibt es ein Problem mit meiner Initialisierung, oder führt es wirklich "jeden Test" aus und sagt nur, dass es 1 ist?

Bearbeiten: Ich habe nur 1 @Test Annotation, aber wie kann ich überprüfen, es tatsächlich alles getestet. Da ich in meiner Test-Engine (XQueryTester) tatsächlich etwas Protokollierung, die nicht gedruckt wird, auf die Konsole gelegt habe, habe ich das Gefühl, dass es nicht wirklich getestet wird.

+0

JUnit coints jeder Testmethode als ein Test, unabhängig davon, wie viele Behauptungen, die Sie tun innen hilft. Wenn Sie denselben Test mit unterschiedlichen Testdaten durchführen möchten, verwenden Sie die '@ Parametrized' Testfunktion von JUnit –

Antwort

0

Wenn Sie nur 1 @Test offensichtlich wird JUnit sagen Sie nur 1 Test ausgeführt werden.

Aber was Sie tun können, um Ihr Ziel zu erreichen, ist Behauptungen, die Sie für jede Datei hinzufügen müssen, um zu überprüfen. Etwas wie folgt aus:

@Test 
public void verifyReadFiles(){ 
    //Your logic here to read process files 
    //Yours assertions here 
    Assert.assertThat(isLoaded(file1), is(true)); 
} 

Hoffe, dass es Sie

+0

Es ist eine großartige Idee, ich versuche es zu implementieren und werde das Ergebnis mitteilen! – 0x45

+0

@HendrikHeim super viel Glück :) – cralfaro

+0

Aber wie ist das Entschuldigen, dass mein Logging nicht in meiner '" testBody/testHeader "Methode angezeigt wird? – 0x45

Verwandte Themen