JUnit'有什么好处;s@忽略和@Disabled注释?

JUnit'有什么好处;s@忽略和@Disabled注释?,junit,Junit,在JUnit测试中添加@Disabled或@Ignore注释有什么好处,例如: @Test @Disabled void testSomething() { /* ... */ } 而不是仅仅删除@Test注释 void testSomething() { /* ... */ } 无论哪种方式,都不应该执行测试。这些注释的实用性主要体现在文档/报告中。当您运行JUnit套件时,会得到一份结果报告@已忽略/@已禁用测试将在该报告中标记为已忽略测试(带有可选注释) 这使您可以跟踪

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

  @Test
  @Disabled
  void testSomething() { /* ... */ }
而不是仅仅删除
@Test
注释

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

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

这些注释的实用性主要体现在文档/报告中。当您运行JUnit套件时,会得到一份结果报告<代码>@已忽略/
@已禁用
测试将在该报告中标记为已忽略测试(带有可选注释)

这使您可以跟踪有多少测试被忽略/禁用。您可以围绕此设置策略(即,如果一个测试被
@忽略了一个月,只需将其删除),或者如果有太多测试被
@忽略了,则使CI系统失败。您可以制作图表,显示一段时间内通过/失败/跳过的趋势


实际上,这一切都归结于您希望如何跟踪测试套件的发展,以及您是否希望看到“跳过”测试的一部分,或者当测试暂时中断/不再有用时,测试的总数下降。

在我看来,@Ignore比评论整个测试方法块更干净


此外,当您运行测试套件时,您会收到一条警告,提示某些测试被忽略。如果你评论它,你就不会明白。也许有一天你会想启用它

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

@禁用了junit5中引入的
。它只接受一个可选参数,该参数指示禁用此测试的原因。例如:

@Disabled("Do not run in a lower environment")
添加
@禁用
@忽略
的优点:

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

  • 可维护的:以后很容易对其进行维护或修改。使用注释总是一种好的做法


  • 它可以为手动运行的测试提供有用的保护,确保它永远不会自动运行

    有其他跳过测试的方法,但是很少有比测试本身承担责任更健壮的方法,而不是依赖测试引擎来关注定制的标记、类别、模式或任何东西

    IDE通常允许您在需要时显式地手动运行禁用的测试,而无需更改。但前提是它承认这是一项测试

    另外:正如在OP上所评论的,您可以在整个测试类上使用它,而在JUnit5中,您需要使用untaging方法触摸每个测试用例以跳过它们


    另外:取消标记可能会触发“未使用的代码”-可能没有保证的警告

    如果出于任何原因(暂时)跳过某些测试,您可以在类级别使用它们,而不是删除所有测试注释。此外,它们在报告中被视为“跳过的测试”,而不是被完全忽略,因此您对正在发生的事情有一个了解。PO没有提到注释代码。他的最后一个选项是从方法中删除@Test注释,这样它就不会作为测试运行。