从命令行运行Junit(Mac)

时间:2015-09-22 16:22:00

标签: java junit

这一定是显而易见的,但在看完这里和其他地方之后我就陷入了困境。我想从命令行运行我的Junit测试。我执行脚本化部署过程,我想在部署之前进行验证。

我发现了这个,但我收到了错误(更多信息如下)。 How to run JUnit test cases from the command line

我可以运行这个: java -cp。:/ path / junit-4.8.1.jar org.junit.runner.JUnitCore HappyPath.class

我在.class文件的这个目录中。

$ ls -lart
total 40
-rw-r--r--  1 rdejournett  staff    144 Sep 22 12:09 package-info.class
-rw-r--r--  1 rdejournett  staff  11001 Sep 22 12:09 HappyPath.class
drwxr-xr-x  5 rdejournett  staff    170 Sep 22 12:09 ..
-rw-r--r--  1 rdejournett  staff    660 Sep 22 12:13 AllTests.class
drwxr-xr-x  5 rdejournett  staff    170 Sep 22 12:13 .

但输出是:

JUnit version 4.8.1
Could not find class: HappyPath.class

Time: 0

OK (0 tests)

我是否需要创建JAR文件?

HappyPath类看起来像这样。

@Test
    public static void happyPath() {

        String xml = "";
        xml = ReadJson.ReadFile("/app/mirth/UnitTests/GEoutput.xml");
        Statements s = new Statements();
        // need XmlDocRoot tag or whatever to parse it properly

        try {
            s = ConvertXmltoObj(xml);
            happyPathStatement(s);
            happyPathGuarantor(s);
            happyPathAging(s);
            happyPathEncounters(s);
            happyPathEncounterCharges(s);
        } catch (JAXBException e) {
            e.printStackTrace();
            fail();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
            fail();
        } catch (SAXException e) {
            e.printStackTrace();
            fail();
        } catch (IOException e) {
            e.printStackTrace();
            fail();
        } 
        assertTrue(true);
    }

更新

删除.class,所以命令是这样的:

java -cp .:/path/junit-4.8.1.jar org.junit.runner.JUnitCore HappyPath

立即收到此错误:

JUnit version 4.8.1
Exception in thread "main" java.lang.NoClassDefFoundError: HappyPath (wrong name: com/xxx/xxx/datamodel/ge/HappyPath)
    at java.lang.ClassLoader.defineClass1(Native Method)

1 个答案:

答案 0 :(得分:1)

经过一番研究,我最终找到了解决方案。

junit: could not find test class

这有助于找出根本原因。

我最终运行的命令是:

java -cp .:/app/mirth/UnitTests/junit-4.8.1.jar:/app/mirth/UnitTests/hamcrest-core-1.3.jar:/Applications/Mirth\ Connect/custom-lib/estatement-obj.jar com.xxx.xxx.datamodel.ge.HappyPath

来自此目录:

/Users/me/mfss-rcm/mfss-rcm-mirth/Myproject/target/test-classes

基本上你需要从root开始并使用FQN,java将其解释为相对路径。所以类文件实际上就在这里:

/Users/me/mfss-rcm/mfss-rcm-mirth/Myproject/target/test-classes/com/xxx/xxx/datamodel/ge

我需要添加junit jar,一个依赖jar和我的实际代码来测试一个jar(不知道如何绕过将它打包成jar的要求,无论如何它并不是什么大不了的事)。

我还在测试类中添加了一个main方法来调用测试类。

public static void main(String[] args) {
    System.err.println("Starting Happy Path Testing");
    happyPath();
}