Goのアプリケーションで、CodeCov使ってテストカバレッジとっているのだがカバレッジ上げるのにすごく大変なのでメモと言うか愚痴というか。
Goではエラーはタプルの返り値で帰ってきてnil判定で判別します。
このように:
hoge, err := sameHandle() if err != nil { panic(err) }
この仕様自体は気軽にかけてすごく好きなのですが、テストカバレッジを計測するときって行ごとに"そこはテストしたのか"っていうので計測しています。
そのため、上の仕様の場合はエラー時のテストも書かないとカバレッジ100%を目指せません。
エラーのときのテストを書くのは普通でなのですが、、、
if err := SetHoge("piyo"); err != nil { return err } if err := SetHoge("nya"); err != nil { return err } return nil
こんな処理をしていると仮定します(Datestoreの要素を連続で消すなど)。
そうするとSetHoge自体のテストは別で行っており、エラーのテストも書いていたとしてもここのテストでif内がテストされていない判定になるのでカバレッジがどうしても上がらなくなります。
まず書き方が悪いのかもしれないという可能性もありそう。