JUnit测试在不同的文件夹中找不到类

时间:2012-07-31 08:08:50

标签: testing junit console classpath subdirectory

我想从控制台运行测试,所以我写了一个小程序(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但我无法确定:/

0 个答案:

没有答案