我很擅长使用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
还是应该测试主要功能?如果没有,我可以以某种方式从覆盖工具中忽略它吗?我应该考虑一个测试框架吗?大多数测试教程都很好但很短,只引入了简单的测试.