【读书笔记】Junit实战
Junit实战读书笔记
第一章节
探索Junit:
Junit是1997年Erich Gammay和Kent Beck一同创建的一个简单有效的测试框架,其中Erich Gammay是经典《设计模式》的四大作者之一,而BentBeck是《极限编程》的创造者
安装Junit:直接引入对应的jar包
编写第一个测试:
能够使用main模拟对应的测试case,然后使用System.out的模式进行处理,但是后期项目庞大的时候,就没有办法掌控住对应的局面了,于是有了这样一个框架。能够对输入参数,前期准备、执行测试、测试返回进行断言,对超时,对异常进行全面的处理。针对单一的方法。
运行测试:
使用对应的方法执行
第二章节
- 使用核心Junit类
Junit概念 | 责任 |
---|---|
Assert | 让你去定义想要测试的条件,当条件成立是,assert保持沉默;单条件不成立的时候,抛出异常 |
测试 | 一个以Test注释的方法定义的一个测试。为了运行这份方法,JUnit会创建一个包含类的新实例,然后调用这个被注释的方法 |
测试类 | 一个测试类是Test方法的容器 |
Suite测试集合 | suite允许将测试类归类成一组 |
Runner运行器 | Runner类用来运行测试。Junit4是向后兼容的,可以运行Junit3的测试 |
运行参数化测试
:Parameterized(参数化)的测试运行器允许你使用不同的参数去多次允许同一个测试代码。
测试运行器
:Junit的测试运行器
类 | 目的 |
---|---|
org.junit.internal.runners.Junit38ClassRunner | 这个运行器包含在当前的JUnit版本中,仅仅是为了向后兼容,他将测试用例作为JUnit3.8的测试用例来启动 |
org.junit.runner.Junit4 | 这个运行器将测试用例作为JUnit4的测试用例来启动 |
org.junit.urnners.Parameterized | 这个测试运行器可以使用不同参数来运行相同的测试集 |
org.junit.runners.Suite | Suite是一个包含不同测试的容器,同事Suite也是一个运行器,可以运行一个测试类中的所有以Test注释的方法 |
- 理解Junit的机制
JunitCore facade外观模式
(org.junit.runner.JunitCore),他可以运行任何测试运行器,并收集测试结果以及统计信息
设计模式实践:设计模式
facade是一种设计模式,它为子系统的一组接口提供了一个统一的接口,facade定义了一个更高级别的接口,使得子系统更易于使用。你可以使用facade来将一些复杂的对象交互简化成一个单独的接口。
并且能够自定义测试运行器,只要扩展Runner类即可
使用sutie来组合测试类
组合一组测试集合
- 理解Junit的生命周期
生命周期
:
@BeforeClass
-> @Before
-> @Test
-> @After
-> @AfterClass
-> 结束
第三章节
- 实现一个简单的应用程序
模拟一个网络应用的控制层面的代码,并且模拟测试 - 使用Junit测试这个应用程序
- 遵循Junit最佳实践
测试的异常处理
在Test中能够处理对应的异常,如果抛出对应异常,也算测试通过
测试超时处理
在测试方法中设定timeout,如果测试过后,以后不需要进行超时设置,就创造忽略的注解
Junit最佳实践:
- 一次只能单元测试一个对象
- 选择有意义的测试方法名字
- 在assert调用中解释失败的原因
- 一个单元测试等于一个Test方法
- 测试任何可能失败的事物
- 让测试改善代码
- 使异常测试更易于阅读
- 总是为跳过测试说明原因