【问题标题】:JUnit 5 Disabled is ignored?JUnit 5 Disabled 被忽略了吗?
【发布时间】:2019-03-07 05:26:38
【问题描述】:

我将 JUnit 5 与 IntelliJ IDEA 社区版 2018 版一起使用。

我的代码很简单:

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

class CalculatorTest {

    @Disabled
    @Test
    void addTwoZeroNumerators(){
    int[] resultExpected = {0,0};
    assertArrayEquals(resultExpected, Calculator.calculate(0,0,0,1));
}

我使用@Disabled。但是当我运行测试时,事件日志仍然报告 1 个测试通过。有人可以告诉我这有什么问题吗?我希望系统忽略此测试。

这是日志部分的标题:

【问题讨论】:

  • 你能显示junit的输出结果吗
  • @afaq 我已经编辑了事件日志的屏幕标题并将其附加到我的帖子中。
  • 总是要确保....您是否构建/进行了更改?
  • 我不明白。你能澄清你的意思吗?我是新手^^"。@shinjw
  • 当告诉 IntelliJ 执行单个测试时,它总是会执行它——不管它是否被禁用。如果执行整个类,禁用的测试不应该运行,但也许您发现了测试类仅包含单个测试方法的情况的错误。尝试添加第二个方法并单独执行它们以及类。如果这是一个错误,请报告它。

标签: java intellij-idea junit5 junit-jupiter


【解决方案1】:

@Nicolai 的回答是 100% 正确的,如果你强制 IntelliJ 执行它,IntelliJ 将执行测试。

但是,如果您想在构建管理系统中启用@Disabled 注释,请记住关于surefire 插件(details)。如果缺少,注释将不起作用。

【讨论】:

  • OP 已经尝试过这种方法,但似乎不起作用。见他的评论。 stackoverflow.com/a/52602566/6690200
  • 我正在使用 org.apache.maven.plugins:maven-surefire-plugin:2.22.0 和 IntelliJ IDEA 2019.2.2(终极版)构建 #IU-192.6603.28,构建于 2019 年 9 月 6 日,@Disabled 不适用于具有一个单一的@Test 方法也具有该方法@Disabled
【解决方案2】:

我认为这可能是 Maven SureFire 插件的一个错误,如果您有一个带有单个 @Test 的类并且它也是 @Disabled,它仍然会尝试运行它。我已经尝试过 maven-surefire-plugin:2.22.0、2.22.2 和 3.0.0-M3,但似乎都有问题。

Apache Maven 团队开票:

https://issues.apache.org/jira/browse/SUREFIRE-1700?filter=-2

使用 JetBrains 打开的票证:

https://intellij-support.jetbrains.com/hc/en-us/community/posts/360006399720-IDEA-2019-2-2-Ultimate-Edition-ignores-Disabled-for-JUnit5-tests-having-a-single-Test-method

https://intellij-support.jetbrains.com/hc/en-us/community/posts/360006399760-IDEA-2019-2-2-Ultimate-Edition-requires-junit-vintage-engine-for-Maven-package-using-only-JUnit5

【讨论】:

    【解决方案3】:

    @托尼·法拉贝拉

    在 Jira 中,我给你一个提示。请使用最新的快照版本 3.0.0-SNAPSHOT 并让我知道这个问题。此快照版本可以在 Apache Nexus 存储库中找到。请在插件开发过程中尽快向我们提供反馈,并尝试使用快照版本,因为这样可以避免新问题:

    <pluginRepository>
      <id>surefire-snapshot</id>
      <name>surefire-snapshot</name>
      <url>https://repository.apache.org/content/repositories/snapshots/</url>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
     </pluginRepository>
    ...
    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.0.0-SNAPSHOT</version>
        </plugin>
      </plugins>
    </build>
    

    在 Jira 中我发现你使用

    <artifactId>junit-platform-launcher</artifactId>
    

    请不要使用它。它与你无关。它仅与 Surefire/Failsafe 和 IDE 的用法有关。

    【讨论】:

      【解决方案4】:

      使用 JUnit 5.8.2 和 maven surefire 2.22.2 我也看到了这个问题

      注意。只有名称以“test ...”开头的测试方法对我来说似乎受到影响。如果您的测试方法有不同的名称,我将无法重现该问题。因此解决方法是将测试方法重命名为不启动“测试...”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-22
        • 2020-07-07
        • 2020-04-18
        • 1970-01-01
        • 1970-01-01
        • 2011-12-18
        • 2020-06-18
        • 2012-02-17
        相关资源
        最近更新 更多