单元测试对我们程序员来说是非常重要的
学习目标
[ ]1、单元测试
- 什么是单元测试
- 为什么使用单元测试
[ ]2、Junit 4 基础
- 环境搭建
- 创建测试类
- 运行测试类
- 什么是断言
- Junit 常用注解
- 官方 Demo
[ ]3、新断言
- 新断言的使用
- 新断言类的替换
[ ]4、常规使用
- 类的单元测试创建
- 运行多个测试
单元测试
百度百科
有什么用
你认为单元测试应该怎么做?
main 函数,调用你的业务方法。
Junit4 的使用
HelloWorld
pom 文件引入
1 | <dependencies> |
测试类:
1 | package com.stj.service; |
Assert 断言
静态函数 | 解释 |
---|---|
assertArrayEquals(expecteds, actuals) | 查看两个数组是否相等。 |
assertEquals(expected, actual) assertNotEquals(first, second) |
查看两个对象是否相等。类似于字符串比较使用的equals()方法 查看两个对象是否不相等。 |
assertNull(object) assertNotNull(object) |
查看对象是否为空。 查看对象是否不为空。 |
assertSame(expected, actual) assertNotSame(unexpected, actual) |
查看两个对象的引用是否相等。类似于使用“==”比较两个对象 查看两个对象的引用是否不相等。类似于使用“!=”比较两个对象 |
assertTrue(condition) assertFalse(condition) |
查看运行结果是否为true。 查看运行结果是否为false。 |
assertThat(actual, matcher) | 查看实际值是否满足指定的条件 |
fail() | 让测试失败 |
Junit 常用注解
- @Test 测试方法
- (expected = XXException.class)
- (timeout=xxx)
- @Ignore 被忽略的测试方法
- @Before 每一个测试方法之前运行
- @After 每一个测试方法之后运行
- @BeforeClass 所有测试开始之前运行
- @AfterClass 所有测试结束之后运行
- @RunWith就是一个运行器
- @RunWith(JUnit4.class)就是指用JUnit4来运行(默认,可以不用写)
- @RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境
- @RunWith(Suite.class)的话就是一套测试集合
官方Demo
AssertTests.java
新断言
新断言 hamcrest
常用的核心新断言,核心匹配器:
1 | import static org.hamcrest.CoreMatchers.*; |
但是,需要具体的一些边界值的操作,就需要引入扩展包
pom 中加入
1 | <dependency> |
Test中引入
1 | import static org.hamcrest.Matchers.*; |
1 | package com.stj.service; |
主要的API接口有如下:
- 核心
- anything -绝对匹配,无论什么情况下都会匹配成功;
- describedAs -添加自定义失败描述
- is -是否的意思,仅用来改善断言语句的可读性;
- 逻辑
- allOf -检查是否包含所有的匹配器,相当于与(&&);
- anyOf -检查是否包含匹配器中的一个,相当于(||);
- not - 检查是否与匹配器相反,相当于非(!);
- 对象
- equalTo -检查两个对象是否相等;
- hasToString - 检查Object.toString;
- instanceOf,isCompatibleType -检查对象是否是兼容类型;
- notNullValue,nullValue -检查是否是null值;
- sameInstance -检查对象是否是相同的类型;
- Beans
- hasProperty -检查对象是否有某种属性;
- 集合
- array -检查array的元素是否和匹配器描述的相同;
- hasEntry,hasKey,hasValue -测试给定的Map是否有特定的实体、键或者值;
- hasItem,hasItems -测试集合是否有一个或者多个元素;
- hasItemInArray -测试数组中是否有某一元素;
- 数字
- closeTo给定的数字是否接近于给定的值;
- greaterThan,greaterThanOrEqualTo,lessThan,lessThanOrEqualTo -给定的数字是否大于、大于等于、小于、小于等于给定的值;
- 文本
- equalToIgnoringCase -检查给定的字符串是否与另一字符串在忽略大小写的情况下相同;
- equalToIgnoringWhiteSpace -检查给定的字符串是否与另一字符串在忽略空格的情况下相同;
- containsString -检查给定的字符串是否包含某一字符串;
- endsWith -检查给定的字符串是否以某一字符串结尾;
- startsWith -检查给定的字符串是否以某一字符串开头;
新断言的再更新
1 | import static org.junit.Assert.assertThat; //删除 |
单元测试的创建
运行多个测试
其他的测试框架
TestNG
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1210331079@qq.com