导入
JUnit 中的断言简介
了解断言的类型及其使用场景。
断言(或 asserts)是 JUnit 中的静态方法调用,可以轻松插入到测试代码中。

每个断言都是一次验证某个条件为
true的机会。如果断言的条件不成立,测试将立即停止,JUnit 会报告测试失败。
当 JUnit 执行测试时,也有可能抛出异常但未被捕获。在这种情况下,JUnit 会报告测试错误。
断言风格
JUnit 支持两种主要的断言风格:
经典风格断言
最初版本 JUnit 提供的断言属于经典风格。assertThat 的静态导入方式如下:
1org.junit.Assert.assertThat (来自 junit-4.12.jar)
Hamcrest 断言
Hamcrest(“Matchers” 的变位词)是一种更现代、更具表达力的框架,用于编写匹配器对象,允许以声明式方式定义匹配规则。它支持自定义断言匹配器。
1org.hamcrest.MatcherAssert.assertThat (来自 hamcrest-core-1.3.jar)
Hamcrest 断言的优势
- Hamcrest 断言能提供更具体的失败信息。例如,看下面这个 Hamcrest 的
assertThat示例:
1assertThat(actual, containsString(expected));
失败时的提示信息为:
1java.lang.AssertionError: Expected: a string containing "educative" got: "Ilovejava"
- 如果传入参数的类型不匹配,代码将无法编译。因此具有 类型安全性。
1assertThat(090078601, is("educative"));
这两种断言风格各自提供了多种形式,适用于不同场景。
虽然可以混合使用两种风格,但通常建议坚持使用其中一种。