【发布时间】:2014-05-03 17:03:20
【问题描述】:
我有一个基于 java 控制台的应用程序,它被创建为 jar 文件并使用以下命令运行:
java -jar commandlineapp.jar
应用程序是使用 maven 构建的。我有一个 junit 测试项目,它也是一个 Maven 项目,即
parent
+- pom.xml
+- commandlineapp
| +-pom.xml
+- commandlineapp_test
+pom.xml
测试项目依赖于命令行应用程序,以确保在运行测试之前构建应用程序。
测试项目有一些使用ProcessBuilder 执行命令行应用程序的junit 单元测试。例如
String jarfile =
"C:\\Users\\me\\.m2\\repository\\my\\org\\commandlineapp\\0.0.1-SNAPSHOT\\commandlineapp-.0.1-SNAPSHOT.jar";
ProcessBuilder pb = new ProcessBuilder("java", "-jar", jarFile);
目前,您可以看到我有一个到 commandlineapp jar 文件的硬编码路径。
问题:是否有一些元数据可以用来查找兄弟项目的 jar 路径?理想情况下,除了从 maven 运行单元测试之外,我还希望能够从 eclipse 运行单元测试。
【问题讨论】:
-
JUnit 测试用例存在于它们自己的模块中的任何特殊原因?
-
我认为测试可能会移到同一个模块中。
-
@Duncan,感谢您的启发。我现在选择相对文件夹
target\classes作为 ProcessBuilder 的-cp参数并直接执行该类,而不是使用-jar选项。
标签: java maven junit processbuilder