导语
在对一个大项目进行开发的时候,测试时必不可少的,尤其是在微服务中,测试可以提高我们对代码的信心,在实际开发中,不可能等到将所有的代码部署完成才测试进行,在开发中,我们应该尽可能的预测出程序运行中会出现的各种情况,用模拟数据的方式完成测试。
Hello World
我们编写一个简单的程序
package main
import "fmt"
func Hello() string {
return "Hello, world"
}
func main() {
fmt.Println(Hello())
}
在这个程序中,可以看到,最简单的测试便是直接在主函数中进行输出,这样对于简单的程序是可行的方案,然而试想如果你的程序很大,在你的主函数中将会引用各种包,来进行测试输出在控制台,到时我们的控制台肯定也是充满了各种日志,用这种方式,将会大大的降低我们的开发时间,实际上在Go中造就为我们提供了一个测试的包,用这个包,我们可以在运行程序前统一的进行测试。如果测试成功便直接部署,不需要在修改我们的任何文件。我们可以测试上面的代码如下:
这里需要注意的是我们的测试文件的命名格式必须为*_test.go。 测试的函数必须是Test命名开头,参数同时也必须是testing.T,这样Go才会知道这是一个测试函数。
package main
import "testing"
func TestHello(t *testing.T) {
got := Hello()
want := "Hello, world"
if got != want {
t.Errorf("got '%s' want '%s'", got, want)
}
}
那么我们如何进行输出呢?在Go中提供了go test命令行
go test hello_test.go
image
如果我们想要得到更多的信息,我们可以使用以下命令
go test -v hello_test.go
image
除了以上命令,还有其他命令如下:
image
image
扩展
在Go中,我们在编写代码之前,经常先编写测试文件,然后用测试结果和真实想要的结果对比来更改我们的程序,这种方式便叫做测试驱动开发
重构测试
假如我们有一个需求希望输出自己想要的结果,如下:
func TestHello(t *testing.T) {
got := Hello("mowuya")
want := "Hello, mowuya"
if got != want {
t.Errorf("got '%s' want '%s'", got, want)
}
}
按照刚刚的方法此时测试输出结果如下,会明显的看到程序出现了问题,因此我们可以按照这个问题的来源来修改我们的函数
image
修改之后
func Hello(str string) string {
return "Hello, " + str
}
image
总结
以上的例子比较简单,主要是了解为什么使用测试,以及测试可以为我们做些什么,在下面的系列文章中,将会逐渐将代码难度加大。
推荐阅读
- 开发环境搭建(持续更新中)
- RabbitMQ系列笔记介绍篇
- Golang中Modle包的使用
- goriila context深入学习笔记
- Go Context深入学习笔记
- 基于Nginx和Consul构建高可用及自动发现的Docker服务架构
- 关于log日志的深入学习笔记
本文欢迎转载,转载请联系作者,谢谢!
- 公众号【常更新】:陌无崖
- GitHub:https://github.com/yuwe1
- 博客地址【定期更新】:https://mowuya.cn/
打开微信扫一扫,关注微信公众号
网友评论