Junit Reports sind leer

MichaelP

Mitglied
Ich benutze Junit für Unit Tests und ein Ant Script:
[XML]<target name="UnitTests">
<junit printSummary="true" showOutput="true" fork="yes">
<!-- <formatter type="brief" usefile="false"/> -->
<formatter type="xml"/>
<!-- <formatter type="plain" usefile="false" /> -->
<classpath >
<pathelement location="${bin_dir}"/>
<pathelement path="${clover.jar}"/>
</classpath>
<batchtest>
<fileset dir="${bin_dir}">
<include name="*Test.class"/>
</fileset>
</batchtest>
</junit>
<junitreport todir="${report_dir}/junit/xml">
<fileset dir="${report_dir}/junit/xml">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${report_dir}/junit/html"/>
</junitreport>
</target>[/XML]
Das Problem ist, dass zwar die Dateien erstellt werden, allerdings ohne Daten. Die Datei TESTS-TestSuites.xml hat zum Beispiel nur folgenden Inhalt:
[XML]<?xml version="1.0" encoding="UTF-8" ?>
<testsuites />
[/XML]

Aber es gibt noch eine weiter Datei: TEST-CalcTest.xml. In dieser steht was drin, aber von wem wird diese erzeugt? Von Ant oder JUnit?
 
Vom junitreport Task 😉

IMHO ist das kein problem, sondern absicht.
Die statische Testsuite aggregiert nur Tests, einzelne Ergebnisse gibt es IMHO nur zu einzelnen Testklassen.
 
Das heißt, ich müsste für jeden Test einzeln einen Report generieren lassen oder wie?

Meine Testklasse sieht so aus:
Java:
import static org.junit.Assert.*;
import org.junit.Test;

public class CalcTest {
	
	@Test
	public void testAdd() throws CalcException{
		Calc calc = new Calc();
		assertEquals(8.0, calc.add(3, 5));
		assertEquals(-2.0, calc.add(3, -5));
		assertEquals(42.0, calc.add(40, 2));
	}
	
	@Test
	public void testMinus() {
		Calc calc = new Calc();
		assertEquals(-2.0, calc.minus(3.0, 5.0));
	}
}
Was müsste ich jetzt ändern, dass ich dafür die berichte bekomme?
 
Zuletzt bearbeitet:
So, ich habe ja definitiv keine Testsuit. Die build.xml Datei habe ich jetzt so geändert, dass die Tests einzeln gemacht werden.
Testklasse in der Datei Projekt\srcTest\CalcTest.java
Java:
public class CalcTest {
	
	@Test
	public void testAdd() throws CalcException{
		Calc calc = new Calc();
		assertEquals(8.0, calc.add(3, 5));
		assertEquals(-2.0, calc.add(3, -5));
		assertEquals(42.0, calc.add(40, 2));
	}
	
	@Test
	public void testMinus() {
		Calc calc = new Calc();
		assertEquals(-2.0, calc.minus(3.0, 4.0));
	}
}
Die binäre Version liegt dann im Ordner Projekt\bin\CalcTest.class

Meine Ant build-Datei sieht wie folgt aus:
[XML]<?xml version="1.0"?>

<project name="Ant-JUnit" default="" basedir=".">
<description>Build file</description>

<property name="src_dir" location="./src"/>
<property name="srcTest_dir" location="./srcTest"/>
<property name="bin_dir" location="./bin"/>
<property name="report_dir" location="./reports"/>

<target name="Cleanup">
<delete verbose="true">
<fileset dir="${bin_dir}">
<include name="*.class"/>
</fileset>
</delete>
<delete verbose="true">
<fileset dir="./">
<include name="TEST-*.xml"/>
</fileset>
</delete>
<delete verbose="true" dir="${report_dir}"/>
<mkdir dir="${report_dir}/junit/html"/>
<mkdir dir="${report_dir}/junit/xml"/>
</target>

<target name="BuildProject">
<mkdir dir="${bin_dir}"/>
<javac destdir="${bin_dir}" verbose="true">
<src>
<pathelement location="${src_dir}"/>
<pathelement location="${srcTest_dir}"/>
</src>
</javac>
</target>

<target name="UnitTests">
<junit printSummary="true" showOutput="true" fork="yes">
<formatter type="xml"/>
<classpath >
<pathelement location="${bin_dir}"/>
<pathelement location="${srcTest_dir}"/>
<pathelement path="${clover.jar}"/>
</classpath>
<test name="srcTest.CalcTest.testAdd"/>
<test name="CalcTest.testMinus"/>
</junit>
<junitreport todir="${report_dir}/junit/xml">
<fileset dir="${report_dir}/junit/xml">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${report_dir}/junit/html"/>
</junitreport>
</target>
</project>[/XML]
Als Ergebnis erhalte ich zwei XML-Dateien mit den Namen der Testklassen: TEST-CalcTest.testAdd.xml. allerdings auch mit folgender Fehlermeldung am Ende dieser Dateien:
[XML]<error message="CalcTest.testAdd" type="java.lang.ClassNotFoundException">java.lang.ClassNotFoundException: CalcTest.testAdd[/XML]
Und die Berichte im Ordner Projekt\report\junit\xml und Projekt\report\junit\html sind immer noch ohne Daten. Sie beinhalten nur das Grundgerüst. Bzw. Die Datei TESTS-TestSuites.xml nur:
[XML]<?xml version="1.0" encoding="UTF-8" ?>
<testsuites />[/XML]
Dabei gibt es doch gar keine Testsuit.
 

Zurück
Oben