Junit单元测试
2020-05-19 10:02:06 6 举报
AI智能生成
Junit单元测试
作者其他创作
大纲/内容
单元测试简介
什么是单元测试
对软件中的最小可测试单元进行检查和验证
Java中最小可测试单元是一个类,单元测试是对类的方法进行测试
一个单元测试是用于判断在某个特定条件或者场景下,某个特定方法的行为
单元测试会花很多时间?
在编写代码的过程中,你在调试上花了多少时间?
你自认为正确,而实际上却存在大量的BUG,你花了多长时间修改?
对于测试同事给出的BUG,你花了多长时间定为BUG?
单元测试的好处
使得工作起来更轻松,减少调试时间,设计更合理
提高代码质量
减少BUG,快速定位BUG
放心的修改,重构
单元测试的任务
接口功能测试
局部数据结构测试
变量有无初始值
变量是否溢出
边界条件测试
变量没有赋值null
变量是数字
主要边界
溢出边界
临近边界
变量是字符串
引用字符变量的边界
空字符串
对字符串长度应用数值变量的边界
变量是集合
变量有规律
所有独立执行通路测试
代码覆盖率
语句覆盖
判定覆盖
条件覆盖
路径覆盖
相关工具
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 条评论
下一页