Go 单元测试框架是相当易用的,其它的第三方库基本都是建立在 testing 原生框架的基础上进行的增补扩充,在日常开发中,原生包可以满足基本需求,但同样也有缺陷,原生包不提供断言的语法使得代码中的这种片段非常多: 所以引入了 convey、assert 包的断言语句,用于简化判断逻辑,使得程序更加易读。 在完成项目单测时,
assert.Contains([]string{"Hello", "World"}, "Hello") assert.True(true) assert.True(false) t.Log("next ...") var s []string assert.Empty(s) assert.Nil(s) t.Log("end ...") } // 一般用的更多的是表驱动方式把同一个单元的测试用例都放在一起 func TestCalculate(t *testing.T) {...
assert.Equal(t, res.Err(), test.expected) } } 3. 私聊功能测试 由于涉及底层数据库交互时需要发送 JSON 转码字符串(WritePkg函数),因此将其 Mock 处理,只需关注本函数逻辑是否正确即可。smsProcess_test.go如下: func TestSmsProcess_SendOnePerson(t *testing.T) { var conn net.Conn tf := &utils....
actual: 输入 assert:断言 expected:期望值 关于assert,Convey 包已经帮我们定义了大部分的基础断言了: 如果上述不满足,我们也可以自定义。 Convey的嵌套 Convey语句可以无限嵌套,以体现测试用例之间的关系。需要注意的是,只有最外层的Convey需要传入*testing.T类型的变量t。 注:子Convey 的执行策略是并行的,因此前面...
1. testify assert 这里我们用到了一个很受欢迎的第三方库 testify 它不仅解决了 golang 没有断言的问题,还提供了许多模拟数据的功能 标准库"testing" "github.com/stretchr/testify/assert" funcTestDemo(t *testing.T){ assert.Nil(t,nil) assert.NotNil(t,struct{}{}) ...
packagemainimport("bytes""encoding/json""github.com/stretchr/testify/assert""io/ioutil""net/http""net/http/httptest""testing")funcTestPingRoute(t *testing.T){ router := setupRouter() w := httptest.NewRecorder() url :="/ping"param := SetupRouterRequest{ Page:1, PageSize:10, } param...
assert.Equal(t, tt.wantErr, err != nil) } } 分析代码生成测试用例 对checkUsername、checkEmail纯逻辑函数编写测试用例,这里以checkEmail为例。 func Test_checkEmail(t *testing.T) { type args struct { email string } tests := []struct { ...
golang单元测试:testing包的基本使用 Go单测从零到溜系列0—单元测试基础 这是Go语言单元测试从零到溜系列教程的第0篇,主要讲解在Go语言中如何编写单元测试以及介绍了表格驱动测试、回归测试和单元测试中常用的断言工具。 Go语言测试 go test工具 Go语言中的测试依赖go test命令。编写测试代码和编写...
t.Run(, func(t *testing.T) { // 使用t.Run()执行子测试 got := Split(put, tt.sep) if !reflect.DeepEqual(got, tt.want) { t.Errorf("expected:%#v, got:%#v", tt.want, got) }}) 1. 2. 3. 4. 5. 6. 使用testify/assert之后就能将上述判断过程简化如下: t.Run...
测试工具包testfy提供了优雅、灵活且可mock的工具,常用于golang的单元测试。其中,testify/assert和testify/require是常用的断言库,而testfy/mock则用于模拟对象。在golang的官方测试框架中,缺乏断言语法,这可能导致测试代码中充斥着大量的if-else语句。然而,testfy/assert为我们提供了许多实用的断言函数,使得测试...