JUnit 5 已禁用是否被忽略?

2022-09-04 22:17:17

我正在使用JUnit 5和IntelliJ IDEA Community Edition Version 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));
}

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

以下是日志部分的标题:

enter image description here


答案 1

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

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


答案 2

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

与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


推荐