我正在尝试从命令行运行JUnit测试用例
我接下来的代码设置为bin dir
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
以下显示了我的完整步骤:
答案 0 :(得分:1)
通常,通过命令行运行Java类就像这样(在Windows上,你似乎正在使用它):
java -cp "jar1;jar2;dir\*" my.app.package.MainClass my_arguments
据我所知,您正试图通过login_sanity
执行测试类JUnitCore
。换句话说,您正在以您的测试类作为参数执行JUnitCore
类;并且您需要junit.jar
库才能运行JUnitCore
类。
要运行此命令,您需要:
junit.jar
库放在类路径中; 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
。
答案 1 :(得分:0)
将junit jar添加到类路径
将测试类添加到类路径中
Runjunit.textui.TestRunnertestclass
java -classpath。; c:\ path \ name.jar; c:\ path \ to \ bin org.junit.runner.JUnitCore nameofclass