如何在没有main函数的情况下从命令提示符运行JUnit测试

时间:2014-06-02 18:31:33

标签: java junit jenkins command prompt

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

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

我有一个动态的web项目,我有一个“test”包,其中有一个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

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

1 个答案:

答案 0 :(得分:1)

仔细阅读命令行:

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

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

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

第二个命令要求TestSuite运行java has a main method java can call,而不是尝试运行JUnitCore。在该类名之后,将测试套件作为第一个参数传递,它告诉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)