前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你会单元测试么?

你会单元测试么?

作者头像
千羽
发布2021-01-14 15:07:27
9280
发布2021-01-14 15:07:27
举报
文章被收录于专栏:程序员千羽程序员千羽

单元测试对我们程序员来说是非常重要的

  • 本次源码已放在Github:https://github.com/nateshao/Unit-Testing
  • 个人博客
    • https://nateshao.gitee.io/
    • https://nateshao.github.io/

学习目标

单元测试

  • 百度百科
  • 有什么用

  • Junit4 的使用
    • HelloWorld
    • Assert 断言
    • Junit 常用注解
    • 官方Demo
  • 新断言
    • 新断言 hamcrest
    • 新断言的再更新

单元测试

代码语言:javascript
复制
百度百科:单元测试

有什么用

你认为单元测试应该怎么做?

main 函数,调用你的 业务 方法。

Junit4的使用

Junit4.13 GitHub 官网

Junit 官网

Junit4.13 的新特性

HelloWorld

pom 文件引入

代码语言:javascript
复制
<dependencies>

测试类:

代码语言:javascript
复制
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)

  1. Ignore 被忽略的测试方法
  2. Before 每一个测试方法之前运行
  3. After 每一个测试方法之后运行
  4. BeforeClass 所有测试开始之前运行
  5. AfterClass 所有测试结束之后运行
  6. RunWith就是一个运行器
  7. RunWith(JUnit4.class)就是指用JUnit4来运行(默认,可以不用写)

RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境

RunWith(Suite.class)的话就是一套测试集合

新断言hamcrest

常用的核心新断言,核心匹配器:

代码语言:javascript
复制
import static org.hamcrest.CoreMatchers.*;

但是,需要具体的一些边界值的操作,就需要引入扩展包

pom 中加入

代码语言:javascript
复制
<dependency>

Test中引入

代码语言:javascript
复制
import static org.hamcrest.Matchers.*;
代码语言:javascript
复制
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 -检查给定的字符串是否以某一字符串开头;

新断言的再更新

代码语言:javascript
复制
import static org.junit.Assert.assertThat; //删除
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 千羽的编程时光 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 学习目标
  • 单元测试
  • 有什么用
  • Junit4的使用
  • HelloWorld
  • Assert断言
  • Junit常用注解
  • 新断言hamcrest
  • 新断言的再更新
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档