单元测试

  • 文件名以 _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. Unity无法显示animator面板,如何解决?

    步骤: 点击动画的主体: 右侧Inspector面板找到Animator,双击Controller中的对象: 左上角即可显示animator面板. 总结: 不行就双击!!!!!!!!!!!!!!!!! ...

  2. 从零玩转Docker之docker-compose-azdocker-compose

    title: 从零玩转Docker之docker-compose date: 2023-04-04 17:39:40.699 updated: 2023-04-04 17:52:15.329 url: ...

  3. Kernel Memory 入门系列:异步管道

    Kernel Memory 入门系列:异步管道 前面所介绍的处理流程都是基于同步管道的,即文档导入的时候,会等到文档处理完成之后才会返回. 但是在实际的应用中,文档很多,而且文档的处理时间也不确定,如 ...

  4. cp {,bak}用法(转载)

    cp filename{,bak} cp filename{,.bak} 这个命令是用来把filename备份成filename.bak的 等同于命令 cp filename filename.bak ...

  5. 11 个步骤完美排查Linux服务器是否被入侵

    文章来源公众号:LemonSec 随着开源产品的越来越盛行,作为一个Linux运维工程师,能够清晰地鉴别异常机器是否已经被入侵了显得至关重要,个人结合自己的工作经历,整理了几种常见的机器被黑情况供参考 ...

  6. 合宙esp32 c3 micro python 固件配置(基于thonny)

    首先,本文档是已经配置过其他esp32后发现合宙的配置需要修改一些地方. 为了让新手们减少掉坑成本,故做了一个图文指导. 准备工作: 1.thonny安装(不讲,自己去查教程) 2.esp32c3 m ...

  7. 一起学习ML和DL中常用的几种loss函数

    摘要:本篇内容和大家一起学习下机器学习和深度学习中常用到的几种loss函数. 本文分享自华为云社区<[MindSpore易点通]网络实战之交叉熵类Loss函数>,作者:Skytier . ...

  8. DBA:介里有你没有用过的“CHUAN”新社区版本Redis6.0

    摘要:华为云DCS Redis 6.0社区版带来了极致性能.功能全面.可靠性强.性价比高的云服务,并且完全兼容开源Redis,客户端无需修改代码,开通后即可使用,使企业完全无需后顾之忧就能享受到业务响 ...

  9. Axure 进度条制作

    拖两个矩形,一个用来做边框,另一个用来做进度 下图进度条的宽要设为2,如果是1的话,看不到背景色动 百分比 进度条 百分比 [[Math.floor(jdt.width/bk.width100)]] ...

  10. Vue 多环境配置

    没有使用 package.json 进行配置 ,改配置时不需要重新打包 Vue 多环境配置 package.json settings.js window.environment="dev& ...