Junit单元测试
2020-05-19 10:02:06 6 举报
AI智能生成
Junit单元测试
作者其他创作
大纲/内容
单元测试简介
什么是单元测试<br>
对软件中的最小可测试单元进行检查和验证
Java中最小可测试单元是一个类,单元测试是对类的方法进行测试
一个单元测试是用于判断在某个特定条件或者场景下,某个特定方法的行为<br>
单元测试会花很多时间?
在编写代码的过程中,你在调试上花了多少时间?
你自认为正确,而实际上却存在大量的BUG,你花了多长时间修改?<br>
对于测试同事给出的BUG,你花了多长时间定为BUG?
单元测试的好处
使得工作起来更轻松,减少调试时间,设计更合理<br>
提高代码质量
减少BUG,快速定位BUG
放心的修改,重构
单元测试的任务
接口功能测试
局部数据结构测试<br>
变量有无初始值
变量是否溢出
边界条件测试
变量没有赋值null<br>
变量是数字
主要边界
溢出边界
临近边界
变量是字符串
引用字符变量的边界
空字符串
对字符串长度应用数值变量的边界
变量是集合
变量有规律
所有独立执行通路测试
代码覆盖率
语句覆盖
判定覆盖
条件覆盖
路径覆盖
相关工具
Coberture
Junit
Junit3
如果某个类需要是测试类,必须将其继承于TestCase,如果某个方法需要是测试方法,必须让这个方法通过testXX开头,在junit3中,如果希望指定某个测试方法运行之前运行某个初始化方法,这个方法的名称必须是setUp,如果希望在某个测试方法运行之后运行某个释放资源的方法,这个方法的名称必须是tearDown。
Junit4
一个POJO类就是一个测试类,测试方法通过@Test注解,初始化方法通过@Before注解,释放资源的方法用@After来注解。@Before@After在每个测试方法运行前都要执行,@BeforeClass和AfterClass在测试类里只执行一次。
Junit5
@BeforeEach和AfterEach,BeforeAll和AfterAll
Junit5=Junit Platform+JUnit Jupiter + JUnit Vintage
JUnit Platform是在JVM上启动测试的框架和基础
JUnit Jupiter是JUnit5独有的新的鞭策模型和扩展模型的组合
JUnit Vintage兼容老版本提供的测试引擎
TDD
注解
所有的核心注解都位于junit-jupiter-api的org.junit.jupiter.api包中
@Test
被注解的方式是测试方法
@ParameterizedTest
参数化测试
@RepeatedTest
重复测试的测试模板
@TestFactory
动态测试的测试工厂
@TestInstance
为带注释的测试类配置测试实例生命周期
@TestTemplate
为测试用例设计的模板,可被多次调用
@DsiplayName
申明测试类或者测试方法的自定义显示名称
@BeforeEach
当前类中每个测试方法之前都执行
@AfterEach
当前类中每个测试方法之后都执行
@BeforeAll
当前类中所有方法之前执行一次
@AfterAll
当前类中所有方法之后都执行一次
@Nested
带注释的类是一个嵌套的,非静态的测试类
@Tag
用于在类和方法级别声明过滤测试的标记
@Disabled
用于禁用测试类和测试方法
@ExtendWith
用于注册自定义扩展
常规测试的生命周期
断言Assert
内容是否相等
assertEquals/assertNotEquals
是否为同一个对象
assertSame/assertNotSame
是否为真/为假
assertTrue/assertFalse
是否为空
assertNull/assertNotNull
是否抛出/不抛出异常
AssertThrows/AssertDoesNotThrows
是否全部相等
assertAll
数组是否相等
assertArrayEquals
迭代是否完全相同
assertIterableEquals
是否超时(告知超时时间)
assertTimeout
是否超时(超时结束)
assertTimeoutPreemptively
匹配(hamcrest)
assertThat
是否字符串列表全部相等
assertLinesMatch
假设Assumptions
参数化测试
MOCK框架
其他?
0 条评论
下一页