2017-01-25 7 views
0

Я пытаюсь создать динамический JUnit Test (поиск файлов в директории, найти соответствие ввода/Прогнозный файл, используйте правую XQuery-трансформаторную и поместить папку источника данных испытаний в нужном каталог.)Как я могу предоставить разные тестовые данные для одного теста JUnit?

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); 

    } 
} 

При запуске этого я получаю следующий результат в моей консоли:

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 
... 

Однако это говорит, что я работала только 1 Test

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

есть проблема с моей инициализацией, или это действительно работает «каждый тест» и просто говорит, что это 1?

Редактировать: У меня только 1 @Test Annotation, но как я могу проверить его на самом деле проверено ВСЕ. Так как в моем тестовом модуле (XQueryTester) я фактически помещаю некоторые записи, которые не печатаются на консоли, поэтому я чувствую, что это не проверяет его.

+0

JUnit coints каждый метод испытания в качестве одного теста, независимо от того, сколько утверждений вы делаете внутри. Если вы хотите сделать один и тот же тест с разными тестовыми данными, используйте факультативу '@ Parameterized' JUnit –

ответ

0

Если у вас только 1 @Test, очевидно, JUnit скажет, что вы используете только 1 тест.

Но то, что вы можете сделать для достижения своей цели, - это добавить утверждения для каждого файла, который необходимо проверить. Что-то вроде этого:

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

Надеется, что это помогает вам

+0

Это отличная идея, я пытаюсь ее реализовать и расскажу результат! – 0x45

+0

@HendrikHeim отличная удача :) – cralfaro

+0

Но как это извиняется, что мой журнал не отображается в моем методе '' testBody/testHeader''? – 0x45