junit白盒测试 案例
为什么要建立一种预期测试失败的机制?
有一段时间,人们会希望并期望JUnit @Test案例失败。 尽管这种情况很少见,但确实发生了。 我需要检测JUnit测试何时失败,然后(如果期望的话)通过而不是失败。 具体情况是我正在测试一段代码,该代码可能会在对象调用内引发Assert错误。 该代码被编写为对流行的新Fest Assertions框架的增强,因此,为了测试功能,人们希望测试用例会故意失败。
一个办法
一种可能的解决方案是将JUnit @Rule提供的功能与注释形式的自定义标记一起使用。
为什么要使用@Rule?
@Rule对象为测试类和每个测试用例提供了类似于AOP的接口。 在运行每个测试用例之前,将重置规则,并且它们以@Around AspectJ建议的方式公开测试用例的工作方式。
必需的代码元素
- @Rule对象检查每个@Test用例的状态
- @ExpectedFailure自定义标记注释
- 测试用例证明代码有效!
- 如果带注释的测试用例没有失败,则抛出可选的特定异常
注意:工作代码在我的github页面上可用,并且已添加到Maven Central中。 随意