我想从控制台运行测试,所以我写了一个小程序(klasse.java):
package nl.user;
public class klasse {
public static int sum(int a,int b){
return a+b;
}
}
和测试(mainTest.java):
package nl.user.TestPackage;
import static org.junit.Assert.*;
import nl.user.klasse;
import org.junit.Test;
public class mainTest2 {
@Test
public void test() {
assertEquals(10, klasse.sum(7,3));
}
}
只要两个.class文件都在同一个文件夹中,一切正常。但在我的所有其他程序中,我的程序和测试都在不同的文件夹中。如您所见,该程序处于“... / nl / user”方向,并且测试位于子文件夹“... / nl / user / TestPackage”中。
如果我使用以下.bat文件运行testfile:
设置CLASSPATH = ,;%CLASSPATH%; C:\ Users \ myname \ Downloads \ eclipse-SDK-4.2-win32-x86_64 \ eclipse \ plugins \ org.junit_4.10.0.v4_10_0_v20120426-0900 \ junit.jar; C :\用户\ MYNAME \工作空间\ JUnitTest \ BIN \ NL \用户; C:\用户\ MYNAME \工作空间\ JUnitTest \ BIN \ NL \用户\ TestPackage; C:\用户\ nlagemann \工作空间\ JUnitTest \ SRC \ NL \用户; C:\用户\ nlagemann \工作空间\ JUnitTest \测试\ NL \用户\ TestPackage
java org.junit.runner.JUnitCore mainTest2
暂停
(是的,并非所有CLASSPATH都需要)
我得到:
Exception in thread "main" java.lang.NoClassDefFoundError: mainTest2 (wrong name
: nl/user/TestPackage/mainTest2)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
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)
at org.junit.runner.JUnitCore.runMain(JUnitCore.java:89)
at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:53)
at org.junit.runner.JUnitCore.main(JUnitCore.java:45)
我想我必须做某事。使用CLASSPATH但我无法确定:/