0

我正在尝试从命令行运行 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

以下显示了我的完整步骤: 在此处输入图像描述

4

2 回答 2

1

通常,通过命令行运行 Java 类是这样完成的(在 Windows 上,您似乎正在使用它):

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

据我所知,您正在尝试login_sanity通过JUnitCore. 换句话说,您正在JUnitCore以测试类作为参数执行该类;并且您需要该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

„将 junit jar 添加到类路径
中„„将测试的类添加到类路径中„„
运行 junit.textui.TestRunner测试类

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

于 2015-04-01T19:26:12.557 回答