无法从命令提示符运行junit测试

时间:2013-02-12 13:56:55

标签: junit webdriver selenium-webdriver junit4 junit3

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

以下显示了我的完整步骤: enter image description here

2 个答案:

答案 0 :(得分: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
  3. 所以就是这样:

    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