1

コンソールからテストを実行したいので、小さなプログラム (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 ファイルを使用してテストファイルを実行すると:

set 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:\Users \myname\workspace\JUnitTest\bin\nl\user;C:\Users\myname\workspace\JUnitTest\bin\nl\user\TestPackage;C:\Users\nlagemann\workspace\JUnitTest\src\nl\user;C :\Users\nlagemann\workspace\JUnitTest\tests\nl\user\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)

私はsthをしなければならないと思います。CLASSPATHを使用しますが、何がわかりません:/

4

0 に答える 0