Skip to content

JUnit 简介

JUnit 是一个简单的框架,用于编写可重复的单元测试。它是 xUnit 测试框架体系的一个实例,专为 Java 语言设计。更多信息可以访问 JUnit 官网

JUnit 的特点

  1. 专为 Java 设计
    JUnit 是针对 Java 编程语言的单元测试框架,广泛应用于 Java 开发中。

  2. 行业标准的测试框架
    JUnit 已成为 Java 领域的标准单元测试框架,被广泛使用和支持。

  3. 多 IDE 支持
    JUnit 可以在多个集成开发环境(IDE)中使用,如 IntelliJ IDEA 和 Eclipse,方便与开发环境集成。

  4. 与 Maven 集成方便
    JUnit 可以通过 Maven 方便地引入和管理,使得测试环境的配置变得更加简便。

  5. 简便的单元测试编写和结果查看
    JUnit 提供了简单的 API,帮助开发者轻松编写单元测试并查看执行结果,提升开发效率。

通过这些特点,JUnit 使得单元测试的编写和维护变得更加高效和便捷。

Unit 的重要概念

名称功能作用
Assert断言方法集合
TestCase表示一个测试案例
TestSuite包含一组 TestCase,构成一组测试
TestResult收集测试结果

JUnit 的一些注意事项及规范

  1. 测试方法必须使用 @Test 修饰
  2. 测试方法必须使用 public void 进行修饰,不能带参数
  3. 测试代码的包应该和被测试代码包结构保持一致
  4. 测试单元中的每个方法必须可以独立测试,方法间不能有任何依赖
  5. 测试类一般使用 Test 作为类名的后缀
  6. 测试方法一般用 test 作为方法名的前缀

JUnit 失败结果说明

  1. Failure:测试结果和预期结果不一致导致,表示测试不通过
  2. Error:由异常代码引起,它可以产生于测试代码本身的错误,也可以是被测代码的 Bug

3.2 JUnit 内容

(1)断言的 API

JUnit 提供了多种断言方法,帮助开发者验证代码的行为是否符合预期。以下是常用的断言方法:

断言方法描述
assertNull(String message, Object object)检查对象是否为 null,如果不为 null,则报错。
assertNotNull(String message, Object object)检查对象是否不为 null,如果为 null,则报错。
assertEquals(String message, Object expected, Object actual)检查预期值与实际值是否相等,如果不相等,则报错。
assertTrue(String message, boolean condition)检查条件是否为 true,如果条件不为 true,则报错。
assertFalse(String message, boolean condition)检查条件是否为 false,如果条件不为 false,则报错。
assertSame(String message, Object expected, Object actual)检查两个对象的引用是否相同,如果不相同,则报错。
assertNotSame(String message, Object unexpected, Object actual)检查两个对象的引用是否不相同,如果相同,则报错。
assertArrayEquals(String message, Object[] expecteds, Object[] actuals)检查两个数组的元素是否相等,逐个比较,如果不相等,则报错。
assertThat(String reason, T actual, Matcher<? super T> matcher)检查对象是否满足给定的匹配规则,如果不满足,则报错。

(2)JUnit 常用注解

JUnit 提供了多种注解来标识不同的测试行为,以下是常用的注解:

  1. @Test
    定义一个测试方法。

    • @Test(expected = xx.class):表示期望测试方法抛出指定异常,如果抛出该异常,则测试通过。
    • @Test(timeout = 毫秒数):指定测试方法的执行时间,超时则测试失败。
  2. @BeforeClass
    在所有测试方法执行前执行,且只执行一次。此方法必须是 static,并且第一个运行。

  3. @AfterClass
    在所有测试方法执行后执行,且只执行一次。此方法必须是 static,并且最后一个运行。

  4. @Before
    在每个测试方法执行前执行一次。

  5. @After
    在每个测试方法执行后执行一次。

  6. @Ignore
    @Ignore 注解的方法会被测试运行器忽略,跳过执行。

  7. @RunWith
    用于指定自定义的测试运行器,可以用来更改默认的 JUnit 测试执行方式。