我很新去测试来自 PHP 的背景和 PHPUnit 测试。
在 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")
}
}
现在在我的示例中,我会遇到覆盖问题,因为单元测试中根本没有涵盖 main()(应该如何处理?)
并且 2 log.Fatal() 根本不包括在内。
我的问题是如何在 go 中准确地编写测试?我是否以一种不太严格的方式来做,而不是测试每一个可能的场景,或者我可以像在 php 中那样使用 @expectedException \InvalidArgumentException Can I 还是应该测试 main 函数进行注释?如果不是,我可以以某种方式从覆盖工具中忽略它吗?我应该考虑一个测试框架吗?大多数测试教程都很好,但很短,只介绍简单的测试。
隔江千里
相关分类