JUnit的@Ignore和@Disabled注释有什么用?

时间:2018-04-12 23:52:45

标签: junit

@Disabled@Ignore注释添加到JUnit测试中有什么好处,例如:

  @Test
  @Disabled
  void testSomething() { /* ... */ }

而不只是删除@Test注释?

  void testSomething() { /* ... */ }

无论哪种方式,都不应该执行测试。

4 个答案:

答案 0 :(得分:3)

这些注释的实用性主要在于文档/报告。运行JUnit套件时,您将获得结果报告。 @Ignored / @Disabled测试将在该报告中标记为(带有可选注释)。

这使您可以跟踪被忽略/禁用的测试数量。您可以围绕此设置策略(例如,如果测试是@Ignored一个月,只需删除它),或者如果@Ignored太多测试,则CI系统会失败。您可以制作显示通过/失败/跳过的趋势的图表。

真的,这一切都归结为你想要跟踪测试套件的演变,并且想要看到一部分"跳过"测试,或测试暂时中断/不再有用时测试的总数。

答案 1 :(得分:2)

@Disabled或@Ignore注释可用于禁用或忽略测试套件中的测试方法。

@Disabled在junit5中介绍。它只接受一个可选参数,表示禁用此测试的原因。示例:

@Disabled("Do not run in lower environment")

添加@Disabled或@Ignore的优势:

  1. 搜索能力:您可以轻松识别源代码中的所有@Ignore或@Disabled注释,而未注释或注释掉的测试并不是那么容易找到。

  2. 可维护:以后可以轻松维护或修改。使用注释始终是一种好习惯。

答案 2 :(得分:0)

在我看来,@ Igore比评论整个测试方法块更清晰。

此外,当您运行测试套件时,您会收到有关某些测试被忽略的警告。如果你发表评论,你就不会得到它。也许有一天你会想要启用它

答案 3 :(得分:0)

对于打算手动运行的测试来说,它可以是一种有用的保护措施,确保它永远不会自动运行。

还有其他跳过测试的方法,但很少有像测试本身那样强大,而不是依赖测试引擎来注意自定义标签、类别、模式或其他任何东西。

IDE 通常允许您在需要时手动显式运行禁用的测试,无需更改。但前提是它将其识别为测试。

另外:正如对 OP 的评论,您可以在整个测试类中使用它,而在 JUnit 5 中,您需要使用取消标记方法来触摸每个测试用例以跳过它们。

此外:取消标记可能会触发“未使用的代码”-警告,这可能是不必要的