【问题标题】:Unable to run JUnit tests inside a Maven project in IntelliJ IDEA无法在 IntelliJ IDEA 的 Maven 项目中运行 JUnit 测试
【发布时间】:2020-02-14 20:10:43
【问题描述】:

我有一个 3 年前的 Maven 项目,该项目在 3 年前在 IntelliJ IDEA 中运行良好。我现在正试图返回该项目,但我无法再运行 JUnit 测试。测试本身并没有什么花哨的东西,它真的很基本@TestassertTrue 的东西。我怀疑问题出在我的pom.xml 文件上。

如果我尝试使用 3 年前的原始 pom.xml 文件运行测试,则会收到错误消息“未找到测试”。我尝试更新我的依赖项,更新后我得到一个不同的错误:java.lang.NoSuchMethodError: 'java.util.Optional org.junit.jupiter.api.extension.ExtensionContext.getTestInstanceLifecycle()'。这似乎是来自 JUnit 的某种内部错误。我花了 1 个小时在谷歌上搜索,我随机尝试了不同的方法来设置依赖项,但到目前为止没有任何效果。

pom.xml 文件应该如何查看才能允许基本 JUnit 测试在 IntelliJ IDEA 2019.3.2 社区版的 Maven 项目中运行?

Here 是 3 年前的 pom.xml 文件。

【问题讨论】:

  • @CrazyCoder 如果您暗示我应该尝试根据链接中的“其他 Maven 依赖项”来构建我的 pom.xml,是的,我之前尝试过,我得到了同样的错误.
  • 不,您需要使用最新版本的依赖项,而不是您现在使用的过时的预发布(里程碑)版本。因此将5.0.0-M3 更新为5.6.0 将解决此问题。 Proof of working.
  • @CrazyCoder 我专门尝试了 5.6.0 版本,但没有解决问题。我可以在您的图像中看到您设法使其运行。能否请您为我粘贴整个 pom.xml 文件?
  • 你在这里:pastebin.com/raw/hTETUE5v。确保重新导入项目,以便 IntelliJ IDEA 更新依赖项。

标签: java maven intellij-idea junit


【解决方案1】:

总而言之,您应该在 junit-jupiter-engine 而不是 api 上创建依赖项(引擎将带来 api)并升级运行测试的surefire插件版本:

    <dependencies>

        <!-- junit 5 -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.6.0</version>
            <scope>test</scope>
        </dependency>

    </dependencies>
    ...
     <build>
        <plugins>

            <!-- Requires at least 2.22.0 otherwise junit 5 doesn't work-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M3</version>
            </plugin>
          ...
         </plugins>
   </build>

您可以找到最小设置的工作示例(非常接近您相当基本的 pom.xml)in this tutorial

【讨论】:

  • 我现在试过了,但我仍然遇到同样的错误。这是我根据您的回答编辑后的 ​​pom.xml:pastebin.com/7U40pnm9
  • java.lang.NoSuchMethodError: 'java.util.Optional org.junit.jupiter.api.extension.ExtensionContext.getTestInstanceLifecycle()'
  • 我从 github 下载了项目,用您在第一条评论中提供的 pom.xml 替换了原始 pom.xml,并尝试运行 mvn clean test。它开始执行 EntropyTest,以便识别并运行测试。我正在使用 maven 3.6.1 和 jdk 12。你能显示整个 maven 构建的输出(至少 mvn clean test 命令)吗?
  • 这是 IntelliJ 给我的输出:pastebin.com/GsEqyDMr
  • 我现在可以确认构建已在我的机器上成功运行。我的意思不仅是错误,而且命令 mvn clean test 的整个输出都是从命令行运行的,根本没有 intelliJ。
猜你喜欢
  • 2011-04-03
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
  • 2015-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多