Logo
Section 1 / 9

JUnit 中的断言简介

了解断言的类型及其使用场景。

导入

JUnit 中的断言简介

了解断言的类型及其使用场景。

断言(或 asserts)是 JUnit 中的静态方法调用,可以轻松插入到测试代码中。

![](http://network.jancsitech.net:9000/pageflex-ai/images/general/202509/1758385217466787631.png)

每个断言都是一次验证某个条件为 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"));

这两种断言风格各自提供了多种形式,适用于不同场景。

虽然可以混合使用两种风格,但通常建议坚持使用其中一种。

JUnit 测试基础

一个经典风格的断言:assertTrue