【问题标题】:Unable to run junit test from command prompt无法从命令提示符运行 junit 测试
【发布时间】:2013-02-12 13:56:55
【问题描述】:

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

以下显示了我的完整步骤:

【问题讨论】:

  • 最后的截图表明你没有编译 login_sanity 类。这是由于您在编译时遇到的错误(即执行 javac)。看看我后来的 cmets,我解释了为什么它无法编译——这是因为你没有 .java 后缀。编译类后,您会注意到当前目录中有一个 login_sanity.class 文件。现在您应该可以使用 login_sanity 作为参数来运行 JUnitCore。
  • 如果我运行它,我会得到 25 个错误:javac -cp "C:\Selenium\junit4.10\junit4.10\junit-4.10.jar;." login_sanity.java 我觉得我不必包含该位置,即使我尝试过 > javac -cp "C:Selenium\junit4.10\junit4.10\junit-4.10.jar;C:Selenium\;." login_sanity.java,即使没有反斜杠,但我想它需要“\”,错误消息是“符号”,我已经尝试了几乎所有可能的组合
  • 如果您在编译 java 文件时出现错误,那么您在 login_sanity 中的实际代码存在问题。除非我看到代码,否则恐怕无法提供任何进一步的帮助,但我认为 StackOverflow 并不是真正进行此类讨论的地方。我建议请一位同事带您完成它。祝你好运! :)
  • 非常感谢。我很感谢你的友善和长时间的交谈:) 我以前和蚂蚁一起跑步的方式更好。我不能投票 :( 你可以用任何方式来支持这个

标签: junit webdriver selenium-webdriver junit4 junit3


【解决方案1】:

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

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

据我所知,您正试图通过JUnitCore 执行您的测试类login_sanity。换句话说,您正在以您的测试类作为参数执行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

【讨论】:

  • java -cp "C:\Selenium\junit4.10\junit4.10\junit-4.10.jar;C:\Ram Doc\ eclipse\workspace\Script_Bvt\bin*" org.junit. runner.JUnitCore login_sanity === JUnit 4.10 版找不到类:login_sanity
  • 我尝试了所有声明了 main 方法的类。它显示上面的“找不到类”现在我该怎么办?
  • 您尝试运行的主要方法是在 JUnitCore 中,它将类名作为其参数。您尝试传递给 JUnitCore 的类名是 login_sanity。错误“Count not find class: login_sanity”表示 JUnitCore 找不到 login_sanity 类。要检查两件事: 1. login_sanity.java 在你的类路径中,即“C:\Ram Doc\ eclipse\workspace\Script_Bvt\bin\”;和 2. 你的路径中必须有尾随反斜杠,所以将你所拥有的更改为 "C:\Ram Doc\ eclipse\workspace\Script_Bvt\bin*"
  • login_sanity 类在我的类路径中,这是一个拼写错误,我在 bin 后确实有“\”。我对此很生气:(
  • 检查您的 login_sanity 类是否不在包中。如果是,那么您需要在命令行中指定包。我已经更新了我的答案以包含这样的例子。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    相关资源
    最近更新 更多