单元测试 Junit
一直以来,都对测试等方面的知识欠缺了解,最近比较闲,所以查漏补缺,学习一下单元测试方面的东西,主要通过学习 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 方法
-
- 实例化 xxxTest
-
- 执行 @Before 方法
-
- 执行 @Test 方法
-
- 执行 @After 方法
参考文献
廖雪峰 -- Junit 单元测试