[英]Assume vs assert in JUnit tests
我读过如果假设失败, assume
将不会运行测试,但我不确定何时放置assert
与assume
的逻辑。
例如:任何资源加载检查都应该使用assume
?
我什么时候应该使用assume
不是assert
?
(注意:我正在寻找何时使用一个而不是另一个的正确设计)
如果在某些情况下根本不应运行某些测试,则可以使用assume
。 “不运行”意味着它不会失败,因为它没有运行。
如果出现问题,您将使用assert
来使测试失败。
所以,在一个假设的场景中:
你会写一个测试:
Assert类是 JUnit 的主力,也是 JUnit 测试人员最熟悉的类。 大多数 JUnit 断言签名本质上是相似的。 它们由可选消息、预期实例或变量以及要比较的实际实例或变量组成。 或者,在像 True、False 或 Null 这样的布尔测试的情况下,只有要测试的实际实例。
带有消息的签名仅具有一个带有消息字符串的初始参数,该消息字符串将在断言失败时显示:
assert<something>(“Failure Message String”, <condition to be tested>);
假设:您可能听说过最好不要进行假设,所以这里有一个测试工具 JUnit 为您提供,以确保您的测试不会。
Asserts 和 Assumes 都会在测试失败时停止并继续进行下一个测试。 不同之处在于失败的 Assert 将失败注册为失败的测试,而 Assume 只是移动到下一个测试。 这允许测试人员确保在运行测试之前按要求存在条件,其中一些条件可能是外部的并且不受测试人员的控制。
有四种假设:一种检查布尔条件,一种检查未发生异常,一种检查空对象,一种可以采用 Hamcrest 匹配器。 如上面的断言部分所示,采用 Hamcrest 匹配器的能力是测试灵活性的途径。
简而言之,假设用于禁用测试,例如以下在 Linux 上禁用测试: Assume.assumeFalse(System.getProperty("os.name").contains("Linux"));
断言用于测试功能。
只需查看假设的javadoc :
一组方法,用于陈述有关测试有意义的条件的假设。 失败的假设并不意味着代码被破坏,而是测试没有提供有用的信息。
换句话说:当断言触发时,您知道您的测试用例失败了。 您的生产代码没有按照您的预期运行。
假设意味着......你不知道到底发生了什么。
Assert 和 Assume 之间最简单的区别是:
Assume只会在假设成立时运行。 如果为 false 将被跳过。
assumeTrue(boolean assumption, String message)
如果为真,断言将正常运行。 在错误断言的情况下,它会给出预定义的错误消息。
assertTrue(boolean condition, String message)
JUnit assert
用于为我们的测试方法编写测试场景。 而assume
用于验证我们的测试用例的有利条件。
如果JUnit assert
失败,则测试失败 。 如果junit assumptions
失败,则跳过测试方法 。
在这里阅读更多
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.