2010-11-26 3 views
3

Ich versuche, eine JUnit 4.8.1-Task in Ant 1.7.1 auszuführen. Meine IDE ist Eclipse Helios. Ich habe jetzt seit 2 Tagen meinen Kopf gegen eine Mauer geschlagen und kann das nicht herausfinden. Ich bin sicher, wenn ich andere Beiträge lese, ist es ein Klassenpfadproblem, aber ich kann nicht sehen, wo ich falsch liege.Ant JUnit Task konnte junit/framework/TestCase.class nicht finden

Mein JUnit4 Testsuite ist wie folgt definiert:

package mypackage.tests; 

import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 

/** 
* JUnit 4 Test Suite for the entire <code>mypackage</code> 
* package 
*/ 
@RunWith(Suite.class) 
@Suite.SuiteClasses({ mypackage.tests.controller.AllTests.class }) 
public class AllTests { 
} 

... einfach genug, aber der Test nicht erfolgreich mit einem ClassNotFoundException

java.lang.ClassNotFoundException: mypackage.tests.AllTests 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Unknown Source) 

Wenn ich auf dem Debug-Flag wechseln, ich die folgende Spur von Ant:

(...) 
[junit] Couldn't find junit/framework/TestCase.class 
[junit] Found C:\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-launcher.jar 
[junit] Found C:\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant.jar 
[junit] Found C:\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-junit.jar 
fileset: Setup scanner in dir C:\eclipse\plugins with patternSet{ includes: [org.junit_4.8.1.v4_8_1_v20100427-1100/junit.jar] excludes: [] } 
Finding class junit.framework.Test 
Loaded from C:\eclipse\plugins\org.junit_4.8.1.v4_8_1_v20100427-1100\junit.jar junit/framework/Test.class 
(...) 

Offensichtlich ist das JUnit-Glas auf dem Klassenpfad und o Da Klassen wie Test.class abgeholt werden, warum bekomme ich dann die Nachricht 'konnte nicht TestClass.class finden'?

Ich versuchte, die junit.jar zur Ameise Classpath in dem Eclipse GUI hinzufügen, und dies hat folgende Wirkung:

(...) 
[junit] Found C:\eclipse\plugins\org.junit_4.8.1.v4_8_1_v20100427-1100\junit.jar 
[junit] Found C:\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-launcher.jar 
[junit] Found C:\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant.jar 
[junit] Found C:\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-junit.jar 
(...) 
[junit] WARNING: multiple versions of ant detected in path for junit 
[junit]   jar:file:C:/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/lib/ant.jar!/org/apache/tools/ant/Project.class 
[junit]  and jar:file:/C:/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/lib/ant.jar!/org/apache/tools/ant/Project.class 
(...) 

Kann jemand bitte, bitte, bitte helfen Sie mir diese Arbeit zu bekommen!

Oh, ich habe es fast vergessen ... die Testsuite läuft in Eclipse einwandfrei.

Vielen Dank im Voraus!

Antwort

2

Der Fehler wird dadurch verursacht, dass Ihre Testklassen nicht geladen werden können.

Haben Sie das Paket mypackage.tests.controller (d. H. Die Ordner mit den Klassendateien oder das Jar-Archiv) auf den Klassenpfad Ihres Junit-Aufrufs gesetzt? Dies kann mithilfe einer geschachtelten Klassenpfadstruktur erfolgen. (http://ant.apache.org/manual/Tasks/junit.html).

+0

OMG, ich könnte weinen. Zwei Tage für DAS !? Das war genau das Problem. Ich konnte nicht herausfinden, wie man nur die Klassendateien hinzufügt, also fügte ich eine Aufgabe hinzu und fügte die Jar-Datei dem Klassenpfad hinzu. – user391549