0

コマンドラインからJUnitテストケースを実行しようとしています
。従ったコードはbindirに設定されています。

c:/eclipse/workspace/sample/bin> java -cp C:\Ram Doc\eclipse\plugins\org.junit_4.8.2.v4_8_2_v20110321-1705.junit.jar C:\Ram Doc\eclipse\workspace\Script_Bvt\bin org.junit.runner.JUnitCore login_sanity(That's my class Name)

エラーメッセージは

C:\Ram Doc\eclipse\workspace\Script_Bvt\bin>java -cp C:\Ram Doc\eclipse\plugins\
org.junit_4.8.2.v4_8_2_v20110321-1705.junit.jar java org.junit.runner.JUnitCore
login_sanity
Exception in thread "main" java.lang.NoClassDefFoundError: Doc\eclipse\plugins\o
rg/junit_4/8/2/v4_8_2_v20110321-1705/junit/jar
Caused by: java.lang.ClassNotFoundException: Doc\eclipse\plugins\org.junit_4.8.2
.v4_8_2_v20110321-1705.junit.jar
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: Doc\eclipse\plugins\org.junit_4.8.2.v4_8_2_v20110
321-1705.junit.jar.  Program will exit.

login_sanity他の場所に保管して実行した場合:

C:\Selenium>javac -cp "C:\Selenium\junit4.10\junit4.10\junit-4.10.jar;." org.junit.runner.JUnitCore login_sanity

次のエラーが発生します。

Class names, 'org.junit.runner.JUnitCore,login_sanity', are only accepted if 
annotation processing is explicitly requested

以下に私の完全な手順を示します。 ここに画像の説明を入力してください

4

2 に答える 2

1

一般に、コマンドラインを介したJavaクラスの実行は、次のように実行されます(Windowsでは、使用しているように見えます)。

java -cp "jar1;jar2;dir\*" my.app.package.MainClass my_arguments

私の知る限り、あなたはテストクラスを実行しようとしていlogin_sanityますJUnitCoreJUnitCoreつまり、テストクラスを引数としてクラスを実行しているということです。クラスjunit.jarを実行するにはライブラリが必要です。JUnitCore

このコマンドを実行するには、次のことを行う必要があります。

  1. junit.jarライブラリをクラスパスに入れて;
  2. 実行するJUnitCoreメインクラスを、メインクラスに渡す引数とともに指定します。login_sanity

だからそれはこのようなものです:

java -cp "C:\path\to\junit.jar;C:\path\to\bin\*" org.junit.runner.JUnitCore login_sanity

上記のコマンドは、クラスlogin_sanityがデフォルトのパッケージ、つまりパッケージなしで、binディレクトリにあることを前提としています。

クラスがデフォルトのパッケージに含まれていない場合、つまりクラス内でパッケージを宣言している場合は、コマンドラインで完全修飾名を使用する必要があります。ここに例があります-login_sanity

クラスが次のパッケージに含まれているとしますmy.app.login。言い換えると、Javaクラスの最初の数行は次のとおりです。

package my.app.services;

public class login_sanity {
  /* your tests go here */
}

この場合、次JUnitCoreのように実行します。

java -cp "C:\ path \ to \ junit.jar; C:\ path \ to \ bin \ *" org.junit.runner.JUnitCore my.app.services.login_sanity

余談ですが、一般的なJavaの規則では、クラスにキャメルケースで名前を付けますLoginSanity

于 2013-02-12T14:45:36.840 に答える
0

junitjarをクラスパスに追加しますテスト
されたクラスをクラスパスに追加し
ますjunit.textui.TestRunnerテストクラスを実行します

java-classpath。;c:\ path \ name.jar; c:\ path \ to \ bin org.junit.runner.JUnitCore nameofclass

于 2015-04-01T19:26:12.557 に答える