我们的项目具有以下结构:
├─ A
├─ A-A
├─ A-B
├─ A-C
├─ A-D
├─ A-E
├─ A-F
├─ A-G
相关的JUnit测试位于 A-A 中。在我们使用Maven之前,我们必须调整运行配置(在参数选项卡中将工作目录设置为启动应用程序的 AB ),以便无错误地启动所有测试。
现在,当我们尝试运行测试时,我们从位于 AA 的类中获得NoClassDefFoundError
,无论我们是否在Eclipse中运行(运行方式> JUnit测试)或与Maven(mvn test
)。我认为这与similar issues on Stack Overflow不同,因为我们的测试根本不起作用。
我的猜测是我们配置了错误的POM,Surefire无法找到所有类文件或类似内容。有没有办法像我们之前使用运行配置一样配置插件?或者这个错误是由其他东西引起的(比如M2Eclipse)?
编辑:项目 A-A 的内部结构如下(ClassCausingError
从Maven依赖项扩展了一个类):
├─ A-A
├─ src/main/java
├─ foo/bar/ClassCausingError.java
├─ src/main/resources
├─ src/test/java
├─ foo/bar/ClassCausingErrorTest.java
├─ target
├─ pom.xml
答案 0 :(得分:1)
将Maven构建运行配置的主选项卡中的基目录设置为 A-B 修复了该问题。这似乎与先前为JUnit设置工作目录具有相同的效果。另外,我编辑了POM,以便从命令行运行测试:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18</version>
<configuration>
<workingDirectory>A-B</workingDirectory>
</configuration>
</plugin>