Java 测试是否有某种 "hidden @Ignore"
Is there some kind of "hidden @Ignore" for Java Tests
所以我们有一些测试仅用于 运行 在本地进行测试。例如,我们有一个使用内部 类 从云端下载文件的测试。
这个测试在我们的CI里不应该是运行,所以放在@Ignore
上。不过,这种方法有两个缺点:
- 测试在 CI
中显示为“已忽略”
- 您必须在每个 运行
之前删除 @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
排除)。
所以我们有一些测试仅用于 运行 在本地进行测试。例如,我们有一个使用内部 类 从云端下载文件的测试。
这个测试在我们的CI里不应该是运行,所以放在@Ignore
上。不过,这种方法有两个缺点:
- 测试在 CI 中显示为“已忽略”
- 您必须在每个 运行 之前删除
@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
排除)。