Go如何测试

作者: 陌无崖 | 来源:发表于2019-08-19 20:03 被阅读0次

导语

在对一个大项目进行开发的时候,测试时必不可少的,尤其是在微服务中,测试可以提高我们对代码的信心,在实际开发中,不可能等到将所有的代码部署完成才测试进行,在开发中,我们应该尽可能的预测出程序运行中会出现的各种情况,用模拟数据的方式完成测试。

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

总结

以上的例子比较简单,主要是了解为什么使用测试,以及测试可以为我们做些什么,在下面的系列文章中,将会逐渐将代码难度加大。

推荐阅读


本文欢迎转载,转载请联系作者,谢谢!


打开微信扫一扫,关注微信公众号

相关文章

  • Go如何测试

    导语 在对一个大项目进行开发的时候,测试时必不可少的,尤其是在微服务中,测试可以提高我们对代码的信心,在实际开发中...

  • Unit Test In Go With Docker

    本篇文章主要讲解如何在 Docker 中进行 Go 单元测试,依赖 Docker 和 Go Modules。 为什...

  • go语言函数测试

    go语言测试方法 测试split 编写的测试函数 go 测试使用的命令

  • GO学习笔记(17) -测试

    测试工具 —go test go test命令用于对Go语言编写的程序进行测试。 测试规范 测试文件必须为"_te...

  • 单元测试&基准测试&样本测试&测试覆盖率

    1.单元测试 1.1.go test 目录 1.2.go test 测试源码文件 测试的源码文件 1.3.go t...

  • go语言测试框架

    go语言内置的测试框架能够完成基本的功能测试,基准测试,和样本测试。 测试框架 go语言测试单元以包为单位组织,包...

  • Go的单元测试与压力测试

    Go怎么写测试用例 开发程序其中很重要的一点就是测试,我们如何保证代码质量,如何保证每个函数都是可运行的,运行结果...

  • Golang压力测试

    Go Test工具 Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要...

  • Golang快速排序(分治-填充)

    go快速排序算法,Go没有while循环,使用for 测试

  • 用golang程序跑满cpu

    test.go hello.go 下图是测试的

网友评论

    本文标题:Go如何测试

    本文链接:https://www.haomeiwen.com/subject/djoesctx.html