HintergrundNicht in der Lage mit ant alle JUnit-Tests in einer Kategorie laufen
ich ein Ant-Skript zu erstellen Ich versuche, die:
- Quelldateien
- kompiliert junit kompiliert Tests
- Run-Junit-Tests einer bestimmten Kategorie
Das meiste von dem, was ich soweit gemacht, wurden aus this question entnommen.
Dies ist, was ich in meinem Ant-Skript haben bisher:
<?xml version="1.0"?>
<project name="junit_tests">
<property name="build-main" location="build/main"/>
<property name="build-test" location="build/main"/>
<property name="src-test" value="java/test" />
<property name="src-com" value="java/com" />
<property name="src-lib" value="webapp/WEB-INF/lib" />
<property name="test-lib" value="java/test/lib" />
<path id="classpath">
<fileset dir="${src-lib}" includes="*.jar"/>
<fileset dir="${test-lib}" includes="*.jar" />
</path>
<path id="classpath.test">
<path refid="classpath"/>
<pathelement location="${build}"/>
</path>
<target name="init">
<mkdir dir="${build-main}" />
<mkdir dir="${build-test}" />
</target>
<target name="compileSrc" depends="init" description="compile src files ">
<javac debug="on" destdir="${build-main}" encoding="UTF-8" fork="true" memorymaximumsize="1024m" includeantruntime="true">
<src path="${src-com}" />
<classpath refid="classpath"/>
</javac>
<javac debug="on" destdir="${build-main}" encoding="UTF-8" fork="true" memorymaximumsize="1024m" includeantruntime="true">
<src path="${src-test}" />
<classpath refid="classpath"/>
</javac>
</target>
<!-- Test and build all files -->
<!-- To run this: use "ant" (default) or "ant run" -->
<target name="run" depends="compileSrc">
<junit printsummary="on" haltonfailure="no" fork="true">
<classpath>
<path refid="classpath.test" />
<pathelement location="${build-test}"/>
</classpath>
<formatter type="xml" />
<batchtest>
<fileset dir="${build-main}" includes="**/NonDBTest.class" />
</batchtest>
</junit>
</target>
</project>
Ausgabe von JUnit Aufgabe
Lauf: [junit] ACHTUNG: mehrere Versionen von Ameise in Pfad erkannt für junit [junit] jar: file: /usr/local/Cellar/ant/1.9.7/libexec/lib/ant.jar! /org/apache/tools/ant/Project.class [junit] und jar: Datei: /Users/arnab/work/my_project/webapp/WEB-INF/lib/ant.jar!/org /apache/tools/ant/Project.class [junit] Lauf test.NonDBTest [junit] Tests ausführen: 2, Fehler: 0, Fehler: 2, Skipped: 0, die verstrichene Zeit: 0,178 sec
BUILD ERFOLGREICH Gesamtzeit: 37 Sekunden
Problem Die Testklasse, die in dieser Kategorie ist NonDBTest
insgesamt 7 Tests hat, so junit ist eindeutig nicht alle von ihnen laufen.
NonDBTest.java
ist nur eine Schnittstelle ohne Methoden, und das ist, was meine Testklasse sieht aus wie
@Category(NonDBTest.class)
public class MyTestClass extends AbstractTestCase{
....
@Test
public void testA(){ ... }
@Test
public void testB(){ ... }
@Test
public void testC(){ ... }
@Test
public void testD(){ ... }
@Test
public void testE(){ ... }
}
Frage Was mache ich falsch? Ich habe versucht, NonTestDB
zu einer Klasse zu ändern. Ich habe versucht, die Schnittstelle zu implementieren, aber nichts hat bisher funktioniert. Wie kann ich junit alle Klassen, die in der Kategorie NonTestDB
sind, laufen lassen? Fehle ich etwas?
Ich habe eine Antwort zu Ihrer verknüpften [Frage] (http://stackoverflow.com/a/42000110/1183010) hinzugefügt, die es ermöglicht, Tests einer bestimmten 'Kategorie' über ant durchzuführen. –