【发布时间】:2015-04-18 00:48:38
【问题描述】:
我们的项目结构如下:
├─ A
├─ A-A
├─ A-B
├─ A-C
├─ A-D
├─ A-E
├─ A-F
├─ A-G
相关的 JUnit 测试位于 A-A 中。在我们使用 Maven 之前,我们必须在 Eclipse 中调整运行配置(将参数选项卡中的工作目录设置为启动应用程序的 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
【问题讨论】:
-
目前我怀疑您的问题中是否有足够的信息来回答它。不过要清楚一点,您在 A-A 中有一个测试会为 A-A 中的另一个类抛出 NoClassDefFoundError?
-
首先我们是在谈论单元测试还是集成测试?此外,您应该知道单元测试仅限于给定的模块。
-
@Duncan 是的,A-A 中有一个测试会抛出 A-A 中的类的错误(我绝对不明白)。
-
@beatngu13 你能编辑你的问题以包含测试类的路径和找不到的类的路径吗?另请参阅this answer,它解释了为什么 NoClassDefFoundError 与 ClassNotFoundException 不同。
-
@beatngu13 我认为您需要为我们编写一个最小的示例。您的示例路径看起来非常好,所以应该没有理由
ClassCausingErrorTest找不到ClassCausingError。因此,开始剥离文件和 POM 语句,直到您在问题中分享的内容最少。在你完成之前,我怀疑我们可以帮助你。
标签: java eclipse maven junit surefire