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如何测试

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