为什么在 IntelliJ 中执行 JUnit 测试没有像宣传的那样工作?

问题描述 投票:0回答:1

在 IntelliJ 中,如何运行特定类中没有与其关联的特定标签的所有测试?

我正在运行最新版本的 IntelliJ,2024.2 Ultimate Edition。如果我通过选择“编辑配置...”然后单击“+”并选择“Junit”作为测试类型来创建新的运行配置,则显示的对话框根本不是特定于 JUnit 的。 在 Stack Overflow 帖子中,我看到那里可以有一个“标签”选项。这是第一个令人不安的迹象。出现的对话框是否应该有一些 JUnit 特定字段?

我的测试方法用

@Test
注释。我想要排除的测试也用
@Tag("ohio")
注释。我想在特定类中运行所有测试,该类没有在方法上注释特定标签“ohio”。我尝试了三种方法来通过编辑将用于运行测试的“运行配置”来获得此行为。 但无论我在这里尝试什么都不起作用:

  1. 我看过一些文档,表明对话框中应该有一些选项可以让我指定标签。 但这些字段不会在对话框中显示:

    enter image description here

  2. 我可以选择“标签”而不是“类”,并用“!ohio”指示过滤掉我想要排除的标签。但这会导致我所有班级中的所有测试都运行。运行不再仅限于一个类,这是有意义的,因为此“标签”选项替换了对话框中的“类”选项:

    enter image description here

  3. 我尝试添加命令行选项

    -DexcludeTags=ohio
    来获得我想要的行为。当我使用此选项运行时,它似乎被忽略了。它应该排除的测试仍在运行:

    enter image description here

java intellij-idea junit
1个回答
0
投票

我认为它没有在任何地方做广告,但确实存在一个长期存在的功能要求,即拥有更灵活的运行配置。我可以看到他们的YouTrack上有相当多的相关票证由于各种原因被关闭了。

与已关闭的票相关联且仍处于打开状态的唯一票证是 https://youtrack.jetbrains.com/issue/IDEA-153780/Add-support-for-JUnit-categories-equivalent-to-that-provided-通过-Maven-surefire-failsafe-plugins。即使它说 Maven,您仍然可以看到一些人们要求更大灵活性的评论,并且在链接的问题中,有关闭的 IDEA-256621 和 IDEA-245281 询问“在没有特定标签的情况下运行文件夹中的所有测试&&”。还有这个SO问题提出了同样的问题,并导致其中提到的一张票。

另外,我认为

-DexcludeTags
选项不存在,并且不确定是否可以以某种方式自定义 IntelliJ 运行程序以支持您的自定义属性并以 JUnit 支持的形式传播它,就像您在 https:// 中看到的那样junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher-options(请参阅-T、--exclude-tag=TAG)。

我知道这很令人沮丧,但看起来我们最好的选择是继续要求 JetBrains 增强他们的运行配置或帮助他们做到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.