Java 测试是否有某种 "hidden @Ignore"

Is there some kind of "hidden @Ignore" for Java Tests

所以我们有一些测试仅用于 运行 在本地进行测试。例如,我们有一个使用内部 类 从云端下载文件的测试。

这个测试在我们的CI里不应该是运行,所以放在@Ignore上。不过,这种方法有两个缺点:

  1. 测试在 CI
  2. 中显示为“已忽略”
  3. 您必须在每个 运行
  4. 之前删除 @Ignore

所以我想有没有办法让CI完全忽略一些测试,所以我只能在本地运行它们?

澄清一下:这不是有条件地忽略测试——而是完全隐藏测试。

从技术角度来看,可能有很多方法可以解决这个问题。例如,如果您使用的是 Maven,则可以自定义 profile so that when enabled, it excludes 这些测试。

但是,如果没有足够的背景说明为什么需要这样做,这似乎是一件坏事。理想情况下,您希望在开发人员机器和 CI 上以相同的方式 运行 启用测试。仅在本地进行测试 运行 是有问题的,因为它缺乏 CI.

的所有好处

JUnit 提供对 @Category (JUnit 4) or @Tag (JUnit 5) allowing you to annotate your individual tests or classes and then selecting the categories you want to run from maven 的支持(或者您可以像您的情况一样使用 excludedGroups 排除)。