单元测试

  • 文件名以 _test.go 结尾
  • 函数名以 Test 开头
  • 函数参数固定 t *testing.T
  • 运行单元测试 go test

Demo

  • 源文件

    package unit
    
    import "strings"
    
    // Splite 分割字符串
    func Splite(str string, delimiter string) []string {
    reslut := make([]string, 10)
    index := 0 for index >= 0 {
    index := strings.Index(str, delimiter)
    if index == -1 {
    break
    }
    reslut = append(reslut, str[:index])
    str = str[index+1:]
    }
    reslut = append(reslut, str[index:])
    return reslut
    }
  • 测试文件

    package unit
    
    import (
    "reflect"
    "testing"
    ) func TestSplit(t *testing.T) {
    got := Split("baba", "b")
    want := []string{"", "a", "a"}
    if !reflect.DeepEqual(got, want) {
    t.Errorf("got: %v want:%v", got, want)
    }
    }
  • 测试组与子测试

    package unit
    
    import (
    "reflect"
    "testing"
    ) func TestSplit(t *testing.T) {
    // 普通测试
    got := Split("baba", "b")
    want := []string{"", "a", "a"}
    if !reflect.DeepEqual(got, want) {
    t.Errorf("got: %v want:%v", got, want)
    } // 测试组
    type testCase struct {
    str string
    deli string
    want []string
    }
    testGroup := []testCase{
    {
    str: "abababaaab",
    deli: "a",
    want: []string{"a", "b", "c"},
    },
    }
    for _, member := range testGroup{
    result := Split(member.str, member.deli)
    if !reflect.DeepEqual(member.want, result) {
    t.Errorf("param: %v %v want: %v but_get: %v", member.str, member.deli, member.want, result)
    }
    } // 子测试
    ChildTestCase := map[string]testCase{
    "caseOne": {
    str: "abababaaab",
    deli: "a",
    want: []string{"a", "b", "c"},
    },
    }
    for name, testCase := range ChildTestCase {
    // 子测试
    t.Run(name, func(t *testing.T) {
    result := Split(testCase.str, testCase.deli)
    if !reflect.DeepEqual(testCase.want, result) {
    t.Errorf("param: %v %v want: %v but_get: %v", testCase.str, testCase.deli, testCase.want, result)
    }
    })
    }
    }

Go-单元测试-Test的更多相关文章

  1. Intellij idea添加单元测试工具

    1.idea 版本是14.0.0 ,默认带有Junit,但是不能自动生成单元测试,需要下载JunitGererator2.0插件 2.Settings -Plugins,下载 JunitGenerat ...

  2. Python的单元测试(二)

    title: Python的单元测试(二) date: 2015-03-04 19:08:20 categories: Python tags: [Python,单元测试] --- 在Python的单 ...

  3. Python的单元测试(一)

    title: Python的单元测试(一) author: 青南 date: 2015-02-27 22:50:47 categories: Python tags: [Python,单元测试] -- ...

  4. javascript单元测试框架mochajs详解

    关于单元测试的想法 对于一些比较重要的项目,每次更新代码之后总是要自己测好久,担心一旦上线出了问题影响的服务太多,此时就希望能有一个比较规范的测试流程.在github上看到牛逼的javascript开 ...

  5. 使用NUnit为游戏项目编写高质量单元测试的思考

    0x00 单元测试Pro & Con 最近尝试在我参与的游戏项目中引入TDD(测试驱动开发)的开发模式,因此单元测试便变得十分必要.这篇博客就来聊一聊这段时间的感悟和想法.由于游戏开发和传统软 ...

  6. 我这么玩Web Api(二):数据验证,全局数据验证与单元测试

    目录 一.模型状态 - ModelState 二.数据注解 - Data Annotations 三.自定义数据注解 四.全局数据验证 五.单元测试   一.模型状态 - ModelState 我理解 ...

  7. ABAP单元测试最佳实践

    本文包含了我在开发项目中经历过的实用的ABAP单元测试指导方针.我把它们安排成为问答的风格,欢迎任何人添加更多的Q&A's,以完成这个列表. 在我的项目中,只使用传统的ABAP report. ...

  8. python_单元测试unittest

    Python自带一个单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 步骤1:首先引入unittest模块--import un ...

  9. .Net中的AOP系列之《单元测试切面》

    返回<.Net中的AOP>系列学习总目录 本篇目录 使用NUnit编写测试 编写和运行NUnit测试 切面的测试策略 Castle DynamicProxy测试 测试一个拦截器 注入依赖 ...

  10. React单元测试——十八般兵器齐上阵,环境构建篇

    一个完整.优秀的项目往往离不开单元测试的环节,就 github 上的主流前端项目而言,基本都有相应的单元测试模块. 就 React 的项目来说,一套完整的单元测试能在在后续迭代更新中回归错误时候给与警 ...

随机推荐

  1. ElasticSearch之Index modules

    索引的参数,分为两类: 静态参数,仅支持在创建索引时指定,或者关闭索引后指定. 动态参数,允许在索引工作期间指定或者修改. 静态参数 index.number_of_shards 默认值为1. 本参数 ...

  2. 最新消息:OpenAI GPT Store 正式上线,GPTs 应用商店来了!

    OpenAI推出的两款新产品和服务:GPT Store和ChatGPT Team,提供了许多全新的解决方案和功能,旨在帮助用户更轻松地使用和构建GPT工具,同时也增加了公司的收入来源.GPT Stor ...

  3. 【Python】人工智能-机器学习——不调库手撕深度网络分类问题

    1. 作业内容描述 1.1 背景 数据集大小150 该数据有4个属性,分别如下 Sepal.Length:花萼长度(cm) Sepal.Width:花萼宽度单位(cm) Petal.Length:花瓣 ...

  4. CSS 基础 1 - Block & Inline

    CSS 基础 1 - Block & Inline display: inline/block/inline-block/none/flex/grid; block block 元素独占一行, ...

  5. Windows环境下为Android编译OpenCV4.3

    Windows环境下为Android编译OpenCV4.3 踩了三四天的坑,今天终于顺利跑通了,原来是toolchain的问题,外网的教程大多都是用opencv source里的toolchain,会 ...

  6. 拥抱Serverless释放生产力,探索华为云Serverless车联网最佳实践

    华为云Serverless车联网场景解决方案,以FunctionGraph为核心的Serverless化组合方案,使用FunctionGraph.OBS.DIS等技术,可以实现架构的灵活扩展,在出行高 ...

  7. 云图说:云数据库 RDS for MySQL一键开通读写分离,轻松应对业务高峰期

    摘要:华为云数据库 RDS for MySQL提供一键开通读写分离功能,只需要一个连接地址,让您在业务高峰期不再迷茫,不再慌乱,so easy 的应对业务. 本文分享自华为云社区<云图说 | 第 ...

  8. 华为云NFT云宝限量开抢,区块链技术为你的数字资产保驾护航

    摘要:正是有这些底层的区块链技术支撑,才能让我们真正的"拥有"独属于自己的NFT数字资产. 本文分享自华为云社区<华为云独家NFT限量开抢,背后的这些技术你都知道吗?> ...

  9. Solon 开发进阶,三、常用配置说明

    Solon 开发进阶 一.插件扩展机制 二.体外扩展机制 三.常用配置说明 四.启动参数说明 五.全局异常订阅 应用主配置文件为: resources/app.yml( 或 app.propertie ...

  10. 通义千问,阿里版ChatGPT,拿到邀请码了

    大家好,我是章北海mlpy 通义千问是阿里巴巴推出的一个大型预训练模型,是达摩院自主研发的超大规模语言模型,能够回答问题.创作文字,还能表达观点.撰写代码. 昨天中午,阿里云通过官方微信公众号对旗下的 ...