文档章节

go test 常见套路(3)

guonaihong
 guonaihong
发布于 09/24 12:33
字数 445
阅读 31
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

通常介绍一件事,先从基本的开始,然后中级,然后高级篇。go test(3)高级篇准备的是如何更快,更爽的写 test 代码。

先来一段不开挂的写法

package test

import (
    "testing"
)

func TestSomething(t *testing.T) {

    var a string = "Hello"
    var b string = "Hellox"

    // 传统方式
    if a != b { 
        t.Errorf("got %s want %s, The two words should be the same.\n", a, b)
    }   

}

你会发现模板化的错误日志是很花时间的,这可能就导致一些童鞋不愿意写 test code。 有没有更爽的写法,还真有。下面是某个 test 库的用法。

引入 testify 库

  • 使用库的写法
package test

import (
    "github.com/stretchr/testify/assert"
    "testing"
)

func TestSomething(t *testing.T) {

    var a string = "Hello"
    var b string = "Hellox"

    // 使用 assert 库的代码
    assert.Equal(t, a, b)

    // 如果用传统方式
    if a != b {
        t.Errorf("got %s want %s, The two words should be the same.\n", a, b)
    }

}

一对比就知道撸的代码变少了。

输出对比 assert 库更有个贴心的错误 diff 日志,就像 git diff 一样爽
=== RUN   TestSomething
--- FAIL: TestSomething (0.00s)
    test_test.go:13:
            Error Trace:    test_test.go:13
            Error:          Not equal:
                            expected: "Hello"
                            actual  : "Hellox"

                            Diff:
                            --- Expected
                            +++ Actual
                            @@ -1 +1 @@
                            -Hello
                            +Hellox
            Test:           TestSomething
    test_test.go:16: got Hello want Hellox, The two words should be the same. //这里是用标准库输出
FAIL
FAIL    test    0.002s

更多常见用法

assert.NoError(t, err)。如果 err 不为 nil 会打印错误
assert.NotEqual(t, obj1, obj2) 不相等打印错误
assert.NotNil(t, err)为空指针打印错误
assert.Nil(t, err)不为空指针打印错误
assert 库文档
https://godoc.org/github.com/stretchr/testify/assert

我的 github

https://github.com/guonaihong/gout

© 著作权归作者所有

guonaihong

guonaihong

粉丝 6
博文 83
码字总数 27591
作品 1
徐汇
程序员
私信 提问
spring boot多环境配置文件管理

这个网上内容比较多,套路就是使用 spring.profiles.active=dev 目前网上说的比较少的是,不同环境下多个配置文件管理 套路是 spring.profiles.active=dev,test-dev spring boot启动的时候,...

名字要响亮
2018/09/27
114
2
Codechef:Count on a Treap(线段树)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35649707/article/details/83024247 传送门 题解: Treap的中序遍历是按照键值来排序后的序列,两点的lca...

DZYO
2018/10/12
0
0
当程序员面对Bug时,我们的一些套路

每一个程序员在开发过程中都会遇到一些Bug 这些bug可能具有以下特点: 1、偶发性出现; 2、不知道怎么造成的 3、不知道怎么解决 解决套路 1、这个用户有毒,换个用户试试; 2、操作方法不对,...

如蜗牛般努力
2017/11/28
0
0
哈,扯淡下人力,招人

要换我招人,我先看人品,情商,再看文化基础,智商,最后才看技术和经验。 不抗压的,出现矛盾意见时,3分钟就甩脸走人的见多了。哈。我自己也是,逐步适应的,谈论时,不上火,不较真,安心...

中山野鬼
2013/12/07
2.4K
27
物联网卡的常见套路,你中招了吗?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40798435/article/details/85126635 随着社会的不断进步和科技的发展,物联网技术的运用也变的越来越广泛,...

智宇物联
2018/12/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

采购单品汇总_华南.xlsx

import pandas as pdimport matplotlib.pyplot as pltimport matplotlib as mp1mp1.rcParams["font.family"] = "STFangsong"# 加载《销售》表数据df1 = pd.read_excel(r"C:\Us......

龙玉滕
今天
5
0
OSChina 周五乱弹 —— 一次四千 要4次还能多给一千

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @这次装个文艺青年吧 :#今日歌曲推荐# 分享金志文的单曲《远走高飞》: 版权又回来了现在听歌得好几个软件 《远走高飞》- 金志文 手机党少年们...

小小编辑
今天
7
0
Spring Cloud Alibaba 实战(十) - Spring Cloud GateWay

> 本文主要内容是:为什么要使用网关,整合Gateway,Gateway核心学习:Route,Predicate,Filter,最后使用Gateway聚合微服务请求 先总结至此的架构 1 网关的价值 不使用网关行嘛? 各个请求直接打在...

JavaEdge
今天
4
0
【CKB.DEV 茶话会】第二期:聊聊 CKB 钱包和 Nervos DAO 全流程

CKB.DEV 茶话会第二期:聊聊 CKB 钱包和 Nervos DAO 全流程 为了鼓励更多优秀的开发者和研究人员参与到 CKB 的开发和生态建设中去,我们希望组织一系列 CKB Developer Seminar(CKB.DEV 茶话...

NervosCommunity
今天
4
0
聊聊rocketmq的HAClient

序 本文主要研究一下rocketmq的HAClient HAClient rocketmq-all-4.6.0-source-release/store/src/main/java/org/apache/rocketmq/store/ha/HAService.java class HAClient extends Serv......

go4it
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部