PHPUnitテストでPHPのバックグラウンドからテストに行くのはかなり新しいです。Goユニットテスト - 致命的テストとテストmain()
PHPでは、あなたが100%のカバレッジが必要であることをかなり心から説教しています。 私がテストについて読んだほとんどのものは、エラーを引き起こすようなものがなくても最小限に見えます。例えば
私の小さなプログラム:今
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")
}
}
()メインは、すべてのユニットテストでで覆われていないので、私はカバレッジの問題を持っているでしょう私の例では
(どのようにしてください)そして、2つのlog.Fatal()は全く扱われていません。
私の質問は、どうやってテストを正確に行っているのですか?可能性のあるすべてのシナリオをテストしない、あまり厳格ではないか、PHPのようなアノテーションを行うことができますか? @expectedException \InvalidArgumentException
main関数をテストすることはできますか?どういうわけかカバレッジツールから無視することはできますか?テストフレームワークを考慮する必要がありますか? ほとんどのテストチュートリアルは素敵ですが、非常に短く、簡単なテストを導入するだけです。
100%カバレッジは有用な指標ではありません。 – JimB
https://github.com/smartystreets/assertions helpful – Plato
'readConfig'は非常に重要な方法のように見えますが、ファイルシステムとは独立したロジックをテストすることができます。 – dm03514