【问题标题】:How to run JUnit test from command prompt, without a main function如何在没有主要功能的情况下从命令提示符运行 JUnit 测试
【发布时间】:2014-07-22 22:54:31
【问题描述】:

我想用 Jenkins 运行一个简单的 JUnit 测试,首先我想在命令提示符下尝试它,如果它有效的话。

JUnit.jar 文件位于 C:\junit.jar

我有一个动态 Web 项目,其中有一个“测试”包,其中有一个 LoginTest 类

    package test;
    import junit.framework.TestCase;
    public class LoginTest extends TestCase { 
        @Test
        public void testLogin() {
            ....
            assertstuff...
        }
    }

我有一个带有 TestSuite 类的单独项目:

    package test;
    import org.junit.extensions.cpsuite.ClasspathSuite;
    import org.junit.runner.RunWith;
    @RunWith(ClasspathSuite.class)
    public class TestSuite {

    }

然后我将我的 LoginTest 类添加到 TestSuite 构建路径。

如果我在 Eclipse 中使用 JUnit 运行 TestSuite,它可以工作,但我想从 cmd 运行它。

我在 cmd 中尝试了以下操作:

    java -cp C:\junit.jar;D:\Documents\eclipse\blablabla\project_path\bin test.TestSuite

但它不起作用。 你能帮我解决这个问题吗?

【问题讨论】:

标签: java junit jenkins command prompt


【解决方案1】:

仔细阅读你的命令行:

java -cp C:\junit.jar;... test.TestSuite
#        (classpath)      (main class)

您告诉 Java 运行您的 TestSuite 的 main 方法,该方法不存在。现在比较来自the SO questionJens 链接的那个:

java -cp /usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
#        (classpath)               (main class - in JUnit!)   (first argument)

第二个命令不是尝试运行TestSuite,而是要求java 运行JUnitCore,即has a main method java can call。在该类名之后,将您的测试套件作为第一个参数传递,它告诉 JUnitCore 加载并运行该类。

试试这个:

java -cp C:\junit.jar;D:\Documents\eclipse\blablabla\project_path\bin org.junit.runner.JUnitCore test.TestSuite
#        (your full classpath)                                        (main class)               (your test class)

【讨论】:

  • 这是我得到的:线程“main”中的异常 java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader。 defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1。在 java.security.AccessController.doPrivileged(Native Method) 处运行(未知来源)在 java.net.URLClassLoader$1.run(未知来源)
  • 正如JUnit Download and Install Guide 上发布的那样,您的类路径中需要 junit.jar 和 hamcrest-core.jar。否则,将找不到 Hamcrest 类(如 org.hamcrest.SelfDescribing)(NoClassDefFoundError)。
猜你喜欢
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 2023-04-04
  • 2012-05-26
  • 1970-01-01
  • 2023-02-11
  • 1970-01-01
  • 2014-12-17
相关资源
最近更新 更多