相关疑难解决方法(0)

去单位 - 测试致命和测试main()

我很擅长使用PHPUnit测试从PHP的背景进行测试.

在PHP中,我们非常热切地鼓励你需要100%的覆盖率.在Go中,我读过的关于测试的大多数东西似乎都很小,没有引发错误的东西.

比如我的小程序:

func main() {
    config = readConfig("config.json")
}

func readConfig(path string) Config {
    var cfg Config
    file, err := ioutil.ReadFile(path)
    if err != nil {
        log.Fatal(err)
    }
    err = json.Unmarshal(file, &cfg)
    if err != nil {
        log.Fatal(err)
    }
    return cfg
}

func TestCanReadConfig(t *testing.T) {
    cfg := readConfig("test_data/config.json")
    if cfg.Broker_pass != "test" || cfg.Broker_port != "3333" {
        t.Error("invalid config")
    }
}
Run Code Online (Sandbox Code Playgroud)

现在在我的例子中我会遇到覆盖问题,因为单元测试中根本没有涉及main()(应该怎么做?)

并且根本没有涵盖2 log.Fatal().

我的问题是如何在go中完全编写我的测试?我是否以不太严格的方式进行测试而不是测试每种可能的场景,或者我可以使用我可以使用php进行注释, @expectedException \InvalidArgumentException 还是应该测试主要功能?如果没有,我可以以某种方式从覆盖工具中忽略它吗?我应该考虑一个测试框架吗?大多数测试教程都很好但很短,只引入了简单的测试.

unit-testing go

1
推荐指数
1
解决办法
143
查看次数

标签 统计

go ×1

unit-testing ×1