2009-06-08 3 views
17

Konfiguruję JUnit w Ant tak, że testy jednostkowe będą uruchamiane na każdej kompilacji. Chciałbym, aby testy z błędami były drukowane na wyjściu konsoli Ant po ich uruchomieniu. Nie muszę widzieć żadnych wyników z kolejnych testów.Jak skonfigurować zadanie JUnit Ant, aby produkować tylko dane wyjściowe w przypadku awarii?

Oto istotne nieco mojego build.xml pliku:

<junit> 
    <classpath> 
     <pathelement path="${build}"/> 
    </classpath> 
    <formatter type="brief" usefile="false"/> 
    <batchtest> 
     <fileset dir="${src}" includes="my/tree/junit/"/> 
    </batchtest> 
</junit> 

To daje niemal co chcę, testy upadające są wyszczególnione w wyjściu Ant, chyba że Kolejne testy także napisać następujące dane wyjściowe:

 [junit] Testsuite: my.tree.junit.ExampleTest 
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 0.002 sec

wierzę próbowałem wszystkie kombinacje wymienionych w dokumentacji JUnit task, w tym:

  • printsummary atrybut
  • showoutput atrybut
  • formatter pierwiastek z każdego rodzaju type

mojego użytku przypadku działa ant z wiersza poleceń. Ponieważ piszę więcej testów, nie chcę, aby wyniki z kolejnych testów były tak duże, że wyniki z testów niepowodzenia przewijają się poza ekranem. Chcę tylko, żeby ant było cicho, chyba że jest test, który wymaga mojej uwagi. Jak mogę skonfigurować Ant/JUnit, aby to zrobić?

Używam wersji Ant 1.6.4 i JUnit 4.6.

+0

Po prostu dodano niestandardową opcję JUnit niestandardowego testu biegowego. – VonC

Odpowiedz

13

Jedną z możliwości byłoby definiować własne formatter xml z atrybutem „classname” (i rozszerzenie org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter potencjalnie robi nic na endTest() or endTestsuite() methods).
Formatowanie to zignoruje komunikat informacyjny i wyświetli tylko komunikaty o błędach.


Uwaga: this settings wspomnieć o możliwość tylko wyświetlania nieudanych prób:

<junit showoutput="true" 
     fork="true" 
     failureproperty="tests.failed" 
     errorproperty="tests.failed"> 
    <batchtest todir="${test.results.dir}"> 
     <fileset dir="test"> 
      <include name="**/*Test.java"/> 
     </fileset> 
    </batchtest> 
    <classpath path="${classes.dir}:${junit.jar}:${test.classes.dir}"/> 
    <formatter usefile="false" type="brief"/> 
    <!-- <formatter type="xml"/> If missing, only displays failed tests --> 
</junit> 

Czy test, który?

Uwaga: "showoutput="true" i <formatter type="brief" usefile="false"/>" może być nieco problematyczne, jak ilustruje to recent (February 2012) ticket)


Yet innego approch byłoby zdefiniować ant biegacza Juint testową, wspieranie mrówkę JUnitResultFormatter i wyświetlanie tylko komunikatów stderr.

Najlepszym przykładem jest model EclipseTestRunner firmy Eclipse.

+0

Bardzo ładna odpowiedź! – guerda

+0

Dzięki temu pokazany przykład jest w zasadzie taki sam jak ten, który zamieściłem w moim pytaniu, więc myślę, że różnica może mieć coś wspólnego z uruchomieniem go w kontekście Netbeans. Spróbuję wdrożyć niestandardowy formatator, ale miałem nadzieję, że nie będę musiał tego robić. –

+0

Zaimplementowałem niestandardowy formater i udało mi się osiągnąć mój pierwotny cel. –