这一定是显而易见的,但在看完这里和其他地方之后我就陷入了困境。我想从命令行运行我的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)
答案 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();
}