JUnit @Ignore有用吗?

don*_*ton 14 java junit unit-testing netbeans ignore

在JUnit中,您可以使用@Ignorebefore方法告诉测试运行器自动跳过这些测试.从我可以收集的内容来看,这实际上只是一种方便的方式来记录/标记您想要稍后返回的不完整/不再有功能的测试.

我是否正确地说,在运行时,@Ignore测试,没有注释的方法和注释掉的方法之间没有区别?(假设这些测试都是自包含的.)有没有办法在Netbeans上的JUnit中获取被忽略的测试用例列表?如果没有,@Ignore标签真正有多大用处,因为失败测试可能更有用,所以它不会被忽视?

Pét*_*rök 21

我是否正确地说,在运行时,@ Ignore测试,没有注释的方法和注释掉的方法之间没有区别?

@Ignored方法可以通过反射找到.没有注释的方法不能(或者,确切地说,它不能被确定识别为被忽略的测试方法),并且注释掉的方法甚至不会进入字节码.

虽然我认为找到@Ignored方法运行时没有多大实际价值,但生成统计/报告可能很有用.

@Ignore标签真正有多大用处

我能想到的一件事是可搜索性.您可以轻松识别@Ignore源代码中的所有注释,而未注释或注释掉的测试不是那么容易找到.

失败测试可能更有用,所以它不会被忽视?

如果你想(并且可以)立即修复它,可以让它失败.有些情况下,你不能,但你仍然希望方法到处,准确地说它不会被遗忘.然后@Ignore才有意义.


lav*_*nio 9

  • 没有注释的方法最有可能是实用方法,可能由测试中的其他方法使用.

  • 注释掉的方法是完全隐藏的方法.

  • 但您可能会@Ignore用来表示您暂时禁用了测试.如果您有一大片复杂的代码正在转换,您可能希望在代码失败时暂时禁用某些测试,尤其是在运行该代码的机制作为某个较大的回归套件的一部分运行时.该@Ignore属性将提醒您(或您的QA团队)还有更多工作要做.

    请记住,@Ignore'd测试仍然是实时代码,可以通过反射看到甚至执行,这些代码不能被注释掉.它还意味着当您重构其他代码时,它们也会更新,并且API中的语法破坏将显示在那里.因此,即使使用@Ignoreset进行测试也可以积极地提高代码质量.

  • JUnit 4 TestRunners将@Ignore'd测试显示为"跳过",这样你最终可以看到有多少测试通过/失败/跳过.

虽然您的Netbeans副本可能无法充分利用@Ignore,但我可以向您保证,它不是JUnit测试的唯一消费者.

  • 除了两件事:**1.**`@ Ignore`'d测试通过反射可见,因此在那里传达了一些额外的信息.**2.**如果您注释掉测试,您将永远不会知道您破坏了API导致潜在的语法错误.将代码保留在那里并且`@ Ignore`'d意味着在代码更改期间至少语法仍然正确. (4认同)

Ed *_*aub 5

@Ignored 测试比注释掉的测试更易于维护(和维护)。随着事物的发展、通过 IDE 的结构化搜索以及 IDE 辅助的重构,它们都会受到编译器错误的影响。