使用 Assume.assumeTrue 或 Assert.assertTrue,测试何时退出?
Using Assume.assumeTrue or Assert.assertTrue, when do tests exit?
我正在使用 JUnit 4.12,这是我目前对以下我经常使用的 API 的理解:
- assumeTrue:如果表达式的计算结果为假,测试将停止并执行
忽略
- assertTrue:如果条件为假,则抛出 AssertionError
- assertEquals:如果它们不相等,则抛出 AssertionError
给定的消息
- assertNotNull:如果为空,则抛出 AssertionError
但是,我无法弄清楚几件事:
- 我的理解是,只有对于 assumeTrue,测试才会退出,但 assert 的定义是当语句计算为 false 时程序应该退出
- 当测试抛出AssertionError时,是退出测试用例还是继续执行剩下的步骤?
- 是否可以认为测试通过,即使它们抛出 AssertionError 或测试被认为失败?
assumeTrue
表示测试不应该运行。这并不意味着您的代码已损坏,大多数 运行 用户会将此测试视为 "ignored"
AssertionError
表示测试失败。该测试用例(单一方法)中不再有步骤 运行。这样做毫无意义,因为测试已经失败
测试失败。如果你想否定测试的意义,还有其他方法可以做到这一点,例如将 assertNull
替换为 assertNotNull
我正在使用 JUnit 4.12,这是我目前对以下我经常使用的 API 的理解:
- assumeTrue:如果表达式的计算结果为假,测试将停止并执行 忽略
- assertTrue:如果条件为假,则抛出 AssertionError
- assertEquals:如果它们不相等,则抛出 AssertionError 给定的消息
- assertNotNull:如果为空,则抛出 AssertionError
但是,我无法弄清楚几件事:
- 我的理解是,只有对于 assumeTrue,测试才会退出,但 assert 的定义是当语句计算为 false 时程序应该退出
- 当测试抛出AssertionError时,是退出测试用例还是继续执行剩下的步骤?
- 是否可以认为测试通过,即使它们抛出 AssertionError 或测试被认为失败?
assumeTrue
表示测试不应该运行。这并不意味着您的代码已损坏,大多数 运行 用户会将此测试视为 "ignored"AssertionError
表示测试失败。该测试用例(单一方法)中不再有步骤 运行。这样做毫无意义,因为测试已经失败测试失败。如果你想否定测试的意义,还有其他方法可以做到这一点,例如将
assertNull
替换为assertNotNull