13

我将 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 个测试通过。有人可以告诉我这有什么问题吗?我希望系统忽略此测试。

这是日志部分的标题:

在此处输入图像描述

4

4 回答 4

7

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

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

于 2018-10-02T14:51:56.927 回答
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-单一测试方法

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

于 2019-10-16T21:00:39.800 回答
0

@托尼法拉贝拉

在 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 的使用有关。

于 2019-10-26T15:46:23.233 回答
0

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

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

于 2021-12-23T16:50:47.847 回答