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



因此,我们有一些测试只是为了在本地运行它们。例如,我们有一个使用内部类从云中下载文件的测试。

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

  1. 测试显示为";忽略";在CI中
  2. 每次运行前必须删除@Ignore

所以我想知道是否有什么方法可以让CI完全忽略一些测试,这样我就只能在本地运行它们了?

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

JUnit提供对@Category(JUnit 4(或@Tag(JUnit 5(的支持,允许您注释单个测试或类,然后从maven中选择要运行的类别(或者您可以像在您的情况下一样使用excludedGroups排除(。

从技术角度来看,可能有很多方法可以解决这个问题。例如,如果您正在使用Maven,您可以定义一个自定义概要文件,以便在启用时排除这些测试。

然而,如果没有足够的上下文来说明为什么需要这样做,这似乎是一件坏事。理想情况下,你希望测试在开发人员机器和CI上都能以相同的方式运行。只在本地运行测试是有问题的,因为它缺乏CI的所有好处。

最新更新