@Ignore
告诉测试运行器自动跳过这些测试。据我了解,这只是一种方便的方式来记录/标记未完成或不再起作用的测试,以便稍后回来处理。那么,我说得对吗?在运行时,一个带有
@Ignore
注释的测试、一个没有注释的方法和一个被注释掉的方法之间没有区别(假设这些测试都是自包含的)。是否有一种方式在Netbeans上获取JUnit中被忽略的测试用例列表?如果没有,@Ignore
标签有多少实用价值呢?因为将测试失败可能更有用,以免被忽视。@Ignore
告诉测试运行器自动跳过这些测试。据我了解,这只是一种方便的方式来记录/标记未完成或不再起作用的测试,以便稍后回来处理。@Ignore
注释的测试、一个没有注释的方法和一个被注释掉的方法之间没有区别(假设这些测试都是自包含的)。是否有一种方式在Netbeans上获取JUnit中被忽略的测试用例列表?如果没有,@Ignore
标签有多少实用价值呢?因为将测试失败可能更有用,以免被忽视。@Ignore
注解的方法可以通过反射找到。没有注解的方法不能(或者准确地说,不能确定地被识别为忽略的测试方法),而被注释的方法甚至连字节码都不会生成。@Ignore
方法并没有太多实际价值,但生成统计/报告可能是有用的。@Ignore
注解,而未经注释或注释掉的测试则不那么容易找到。@Ignore
。没有注释的方法很可能是实用方法,通常被测试中的其他方法使用。
被注释掉的方法是完全隐藏的。
但您可以使用@Ignore
来表示您暂时禁用了测试。如果您有一个大而复杂的代码段正在转换中,您可能希望在该代码段失败时暂时禁用一些测试,特别是如果运行该代码的机制作为某个更大的回归套件的一部分运行。 @Ignore
属性将提醒您(或您的QA团队)还有更多工作要做。
请记住,有@Ignore
的测试仍然是活动代码,并且可以通过反射查看甚至执行,而注释掉的代码则不能。这也意味着当您重构其他代码时,它们也会得到更新,并且API中的语法破坏将在那里显示。因此,即使设置了@Ignore
的测试也可以积极地促进代码质量。
JUnit 4 TestRunners将把@Ignore
的测试显示为“跳过”,因此您可以在最后看到通过/失败/跳过的测试数量。
虽然您的Netbeans副本可能没有充分利用@Ignore,但我可以向您保证,它并不是JUnit测试的唯一消费者。
忽略的测试比被注释掉的测试更易于维护(并且更容易被维护)。它们会因为事物的发展而受到编译器错误、IDE的结构化搜索和IDE辅助重构的影响。
请注意,TestNG 对此提供了略有不同的支持:
You can include a description of why the test is being ignored:
@Test(enabled = false, description = "Disabled until BUG-1234 gets fixed")
@Ignore("Description")
。我不知道这是什么时候引入的。 - Thorbjørn Ravn Andersen使用@Ignore
而不是注释掉@Test
的优点在于,Hudson/Jenkins将其识别为被忽略的测试,并相应地在测试结果中显示。因此,您会提醒自己有一个被忽略的测试,这是一个很大的好处!
在我看来,@Ignore的用处是可以在报告中知道有x个测试被跳过了,如果测试没有被注释为测试或者已经被注释掉了,你就无法得到这个信息。 让测试失败并不是一个好的选择,因为我们知道我们想要忽略的测试在某些时候并不相关,但是以后可能需要重新启用它们。所以我们希望看到所有其他测试是否会成功/失败,知道我们将跳过不相关的测试(我们已经跳过它们的事实将在报告中可见)。
@Ignore
注解的测试可以通过反射访问,因此会传达一些额外的信息。@Ignore
注解至少意味着在代码更改期间语法仍然是正确的。