当前位置: 首页 > 知识库问答 >
问题:

Maven多模块项目中的JUnit测试抛出NoClassDefFoundError

杜志
2023-03-14

我们的项目结构如下:

├─ A
   ├─ A-A
   ├─ A-B
   ├─ A-C
   ├─ A-D
   ├─ A-E
   ├─ A-F
   ├─ A-G

相关的JUnit测试位于A-A中。在使用Maven之前,我们必须调整Eclipse中的运行配置(将arguments选项卡中的工作目录设置为A-B,启动应用程序),以便在没有错误的情况下启动所有测试。

现在,当我们尝试运行测试时,无论我们是否在Eclipse中运行测试,我们都会从a-a中的类中得到一个NoClassDefFoundError

我的猜测是我们有一个错误的配置的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

共有1个答案

华坚成
2023-03-14

将Maven build-run配置的主选项卡中的基本目录设置为A-B解决了这个问题。这似乎与之前为JUnit设置工作目录的效果相同。此外,我编辑了POM,使测试从命令行运行:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18</version>
    <configuration>
        <workingDirectory>A-B</workingDirectory>
    </configuration>
</plugin>
 类似资料:
  • 我使用的是Maven 3.0.3、JUnit 4.8.1和Java1.6。我在JUnit测试文件中有这个... 未拾取“test.properties”(输入流对象为空)。我的项目结构如下: parent+---pom.xml +----war模块 +------pom.xml +------src/test/java/junit文件 +------src/test/resources/test.

  • 我有根项目,然后是子模块。这些模块是相互依赖的,当我为一个模块运行maven测试时,它会抛出类未找到异常。 ProjectA --ProjectSubA --ProjectSubB --ProjectSubC(依赖项ProjectA和ProjectB) ProjectSubC有Maven测试,所以当它运行时,类在ProjectSubB和ProjectSubA中。现在如何解决这个问题。

  • 我有一个多模块maven项目,包含三个模块、和 Core具有以下依赖项定义 我已经为所有三个模块添加了Java9定义,的如下所示: 但是,我不知道如何让的测试类能够在测试执行期间看到类。当尝试测试运行时,找不到类。 如果向的添加需要My.Project.TestUtils;的: 然后在编译时,我得到一个错误,即找不到模块(大概是因为它只是作为测试依赖项引入的)。 在Java9模块化的世界中,如何处

  • 假设我们有一个多模块的项目父模块module1、module2,其中module1依赖于module2。 如果我运行“MVN测试”(而不是“MVN安装”),模块2会看到模块1的变化吗? 提前道谢。

  • 我曾广泛使用过Maven 目前有5个不同的maven项目,每个项目都有一个不同的pom.xml。到目前为止,它们之间存在依赖关系,如果需要,每一个都指向 中的另一个。 现在我们不喜欢的是 当我们发布子projectA时,我们需要手动修改所有将projectA作为依赖项的项目以使用新版本。Saw Maven有一个版本插件,不知道这会有什么帮助。 作为解决方案,我希望在POM之间有一个更干净的组织,并

  • 如何在导入到另一个模块的jar中包括测试目录(src/test/)下的Spring bean? 我有几个Maven项目: ms1、ms2、ms3和通用共享。通用共享是一个多模块的Maven项目。它包含几个模块:通用共享utills、通用共享fs等... 在每个子模块中,我都有一个专用的pom。xml以及所需的所有依赖项,在通用共享pom中,我有关于构建和模块的详细信息: 似乎我为子模块中的测试(位