使用Assume.assumeTrue或Assert.assertTrue,什么时候测试退出?

时间:2016-03-24 19:27:17

标签: junit assert

我正在使用JUnit 4.12,这是我目前对我经常使用的以下API的理解:

  • assumeTrue:如果expression的计算结果为false,则test将停止并且为 忽略
  • assertTrue:如果condition为false,则抛出AssertionError
  • assertEquals:如果它们不相等,则抛出AssertionError 给定的消息
  • assertNotNull:如果为null,则抛出AssertionError

但是,我无法澄清几件事:

  1. 我的理解是,只有对于assumeTrue,测试才会退出,但断言的定义是程序应该在语句求值为false时退出
  2. 当测试抛出AssertionError时,是退出测试用例还是继续执行其余步骤?
  3. 是否可以将测试视为通过,即使它们抛出AssertionError或者测试被认为是失败的?

1 个答案:

答案 0 :(得分:2)

  1. assumeTrue表示测试不应该运行。这并不意味着您的代码被破坏,大多数参赛者将此测试视为“忽略”

  2. AssertionError表示测试失败。将不再运行该测试用例(单个方法)中的步骤。由于测试已经失败,这样做毫无意义

  3. 测试失败。如果您想否定测试的含义,还有其他方法可以做到这一点,例如:将assertNull替换为assertNotNull