你不能错过的 Go 强大图形化测试工具(上)

简介: GoConvey 完美兼容 Go 内置的 testing 库,提供命令行工具简化内置的测试执行命令,测试会自动运行,提供更加直观的 Web 界面,最重要的是能够很轻易的得到测试报告。

1 GoConvey 的特性

  • 直接集成 Go 内置测试工具,比如可以直接使用 go test
  • 大量的回归测试套件
  • 提供可读的,彩色的控制台输出
  • 完全自动化的 Web UI
  • 测试代码生成器
  • 桌面提醒(可选)
  • 自动在终端中运行自动测试脚本
  • 可立即在 Sublime Text 中打开测试问题对应的代码行 (some assembly required)

2 下载安装

$ go get github.com/smartystreets/goconvey
$ $GOPATH/bin/goconvey


安装成功将看到如下输出:

yuzhou@yuzhou:~/GoProjects$ go get github.com/smartystreets/goconvey/convey
go: downloading github.com/smartystreets/assertions v1.2.0
go: downloading github.com/jtolds/gls v4.20.0+incompatible
go: downloading github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1
go get: added github.com/smartystreets/goconvey v1.7.2

3 如何使用

结构如下:


image.png


  1. 创建一个 utils.go 文件,写一个整数求和的 Sum 函数:
package utils
func Sum(nums ...int) int {
  sum := 0
  for i := 0; i < len(nums); i++ {
    sum += nums[i]
  }
  return sum
}


然后创建一个单元测试的文件 utils_test.go 文件:

package utils
import (
  "testing"
  . "github.com/smartystreets/goconvey/convey"
)
func TestSum(t *testing.T) {
  Convey("Test Sum", t, func() {
    Convey("1 + 2 + 3 + 4 + 5", func() {
      So(Sum(1, 2, 3, 4, 5), ShouldEqual, 15)
    })
    Convey("1 + 2022", func() {
      So(Sum(1, 2022), ShouldEqual, 2023)
    })
  })
}


  • 第 6 行中 以 . 导入库的方式简化调用。
  • 第 9 行代码,单元测试函数的命名及注意事项和内置库 testing 要求一致(比如测试函数以 Test_开头,传入参数为*testing.T)。
  • 函数体中第一层 Convey 提供 3 个参数:Test Sum(说明测试的名称)、tfunc()
  • 嵌套的 Convey 层提供两个参数:1 + 2 + 3 + 4 + 5(说明测试的名称)和 func()
  • 使用 So 来判断预期值和输出,这里使用 ShouldEqual
package utils
import (
  "testing"
  . "github.com/smartystreets/goconvey/convey"
)
func TestSum(t *testing.T) {
  Convey("Test Sum", t, func() {
    Convey("1 + 2 + 3 + 4 + 5", func() {
      So(Sum(1, 2, 3, 4, 5), ShouldEqual, 15)
    })
    Convey("1 + 2022", func() {
      So(Sum(1, 2022), ShouldEqual, 2023)
    })
  })
}


因为 GoConvey 很好的集成了 Go 原生 tes 在终端中执行 go test -v 命令,得到如下结果,测试通过:

=== RUN   TestSum
  Test Sum 
    1 + 2 + 3 + 4 + 5 ✔
    1 + 2022 ✔
2 total assertions
--- PASS: TestSum (0.00s)
PASS
ok      utils.go        0.012s
S


在终端着有着非常人性化带有彩色的界面,如图所示:


image.png

相关文章
|
3月前
|
SQL 安全 数据库连接
《Go 简易速速上手小册》第6章:错误处理和测试(2024 最新版)(上)
《Go 简易速速上手小册》第6章:错误处理和测试(2024 最新版)
58 1
|
9月前
|
算法 测试技术 Go
【Go 编程实践】从零到一:创建、测试并发布自己的 Go 库
解释了为何需要开发自己的 Go 库,以及如何创建、测试和发布。文章以 Asiatz 库为例,详细阐述了创建目录、初始化项目、编写代码、测试、编写文档和发布等步骤,并强调了开发自己的 Go 库的优点,包括代码复用性、可维护性和可测试性。
278 0
【Go 编程实践】从零到一:创建、测试并发布自己的 Go 库
|
3月前
|
JSON 测试技术 Go
《Go 简易速速上手小册》第6章:错误处理和测试(2024 最新版)(下)
《Go 简易速速上手小册》第6章:错误处理和测试(2024 最新版)
50 0
|
12天前
|
SQL 安全 测试技术
[go 面试] 接口测试的方法与技巧
[go 面试] 接口测试的方法与技巧
|
17天前
|
算法 安全 测试技术
Go - 常用签名算法的基准测试
Go - 常用签名算法的基准测试
13 2
|
5天前
|
JSON 测试技术 Go
Go 单元测试完全指南(一)- 基本测试流程
Go 单元测试完全指南(一)- 基本测试流程
7 0
|
26天前
|
运维 监控 测试技术
Golang质量生态建设问题之接入并使用Go单元测试插件的问题如何解决
Golang质量生态建设问题之接入并使用Go单元测试插件的问题如何解决
|
26天前
|
测试技术 Shell Go
Golang质量生态建设问题之Go语言的单元测试的问题如何解决
Golang质量生态建设问题之Go语言的单元测试的问题如何解决
|
2月前
|
算法 Go
使用go实现复数集合图形
【6月更文挑战第26天】本文介绍如何使用go绘制复数面曼德博集合图。提供的Go代码片段展示了判断点是否属于集合的算法,生成自相似图形。复数的接受与应用扩展到物理学等领域,成为重要工具。
38 0
使用go实现复数集合图形
|
2月前
|
测试技术 Go
go的测试编写、断言、性能测试
go的测试编写、断言、性能测试
18 0

热门文章

最新文章