一直以来,都对测试等方面的知识欠缺了解,最近比较闲,所以查漏补缺,学习一下单元测试方面的东西,主要通过学习 Junit 进行了解。

Junit

Junit 是一个针对 Java 语言设计的,最广泛的单元测试框架。Junit 是事实上的标准单元测试框架。

Junit 特点

  • 使用断言 Assertion 测试期望的结果
  • 可以方便地组织和运行测试
  • 可以方便地查看测试结果
  • 常用IDE都对 Junit 进行了集成
  • 可以方便地集成到 Maven

Junit 的设计

  • TestCase:一个 TestCase 表示一个测试
  • TestSuite:一个 TestSuite 包含一组 TestCase,表示一组测试
  • TestFixture:一个 TestFixture 表示一个测试环境
  • TestResult:用于收集测试结果
  • TestRunner:用于运行测试
  • TestListener:用于监听测试过程、收集测试数据
  • Assert:用于断言测试结果是否正确(区分 Assert 关键词)

Assert 的使用

  • 断言相等 assertEquals(100, x)
  • 断言数组相等 assertArrayEquals({1,2,3}, x)
  • 浮点数断言相等 assertEquals(3.1415, x, 0.0001)
  • 断言为 null assertNull(x)
  • 断言为 true/false assertTrue(x>0) assertFalse(x<0)
  • 其他 assertNotEquals / assertNotNull

Junit 使用总结

  • 一个 TestCase 包含一组相关的测试方法
  • 使用 Assert 断言测试结果 (浮点数需要制定小数点后的位数)
  • 每个测试方法必须完全独立
  • 测试代码必须非常简单
  • 不能为测试代码再编写测试
  • 测试需要覆盖各种条件,特别是边界条件

Junit 中的 @Before 和 @After

@Before 方法中初始化测试资源 @After 方法中释放测试资源

Junit 对于每个 @Test 方法

    1. 实例化 xxxTest
    1. 执行 @Before 方法
    1. 执行 @Test 方法
    1. 执行 @After 方法

参考文献

廖雪峰 -- Junit 单元测试