Try Golang! カバレッジレポートのグレーの行はいったい何もの!?

Golang coverage can also count the number of passes

Takuo
VELTRA Engineering
3 min readJun 4, 2019

--

Goは標準のテストツールでカバレッジレポートを作成できるので、利用している人も多いかと思います。テストで通った行はグリーン。テストで通らなかったところはレッド。一目瞭然です。

ところが先日、トラック対象外の行でもないのに、グレーの行を見つけてしまいました(下図)。通ったの?通ってないの?どっちなんだい!?

通っていました!

結論から言うと、通っていました。私が知らなかっただけなのですが、実はGoのテストツールは通過回数をカウントするモードがあり、そのモードでテストを実行した場合、通過回数が多い行は鮮やかなグリーンで、通過回数の少ない行はグレーで表示されるのです。

このモードはgo testコマンドの-covermodeオプションで指定します。デフォルトのsetは通過有無のみ、countは通過回数をカウント、atomicも通過回数をカウントしますがマルチスレッドテストでも正確にカウントできるようになります。ちなみに-raceオプションを指定した場合は、デフォルト値がatomicになるので、-covermodeオプションを指定しなくてもカウントされます。

よくよく見ると、、、

実は、通過回数を色で表示することは、ヘッダにちゃんと書いています。

実際に、通過回数を調整してテストするとこんな感じになります。0~9の数字について、1回ずつ引数に指定した結果です。

また、行にカーソルを合わせると通過回数を確認できます。

唐突にグレーの行を目にしても、もう驚かないで済みますね!

--

--

Takuo
VELTRA Engineering

Engineer who likes travel, simple code, and something new