LoginSignup
7

More than 5 years have passed since last update.

dotCover でコードのカバレッジを取る

Last updated at Posted at 2018-07-22

Get Started 通りの説明だけど、便利なのに日の目を見ることがない便利ツールで終わってしまいそうな気がしたので書いてみました。

dotCover とは?

JetBrains dotCover は、Visual Studio に統合できる .NET 単体テスト ランナーとコード カバレッジ ツールです。
単体テストでカバーされるコードの範囲を確認してください。 dotCover は、ターゲットとなる .NET Framework、Silverlight、さらに .NET Core のアプリケーション内のステートメント レベルでコード カバレッジを計算、レポートします。

簡単にまとめるとコードのカバレッジを見やすく出してくれるツールです。
C# 界隈では有名な ReSharper と同じ JetBrains のツールです。 ReSharper Ultimate のライセンスがあれば使用できます。 ReSharper と同様に 30日間は試用期間で使えるので、気になった方はインストールしてみてください。

インストール手順

ReSharper Ultimate のインストーラーを起動して dotCover を選択してください。
Next -> Install の順に選択することでインストールが完了します。
Image from Gyazo

dotCover の使い方

テスト実行

テスト対象のコードを用意します。今回は成功用の MethodA と、失敗用の MethodB を用意しました。

public class CoverageService
{
    public int MethodA(int id)
    {
        if (id == 0)
        {
            return 0;
        }
        else if (id > 1)
        {
            return 1;
        }
        else
        {
            return -1;
        }
    }

    public int MethodB(int id)
    {
        if (id == 0)
        {
            return 0;
        }
        else
        {
            return -1;
        }
    }
}

単体テストのコードを用意します。今回は xUnit のテストライブラリを使用しました。 MSTestNUnit も対応しています。

[Fact]
public void MethodATest()
{
    Assert.Equal(0, new CoverageService().MethodA(0));
    Assert.Equal(1, new CoverageService().MethodA(5));
    Assert.Equal(-1, new CoverageService().MethodA(-5));
}

[Fact]
public void MethodBTest()
{
    Assert.Equal(9, new CoverageService().MethodB(0));
}

Visual Studio のメニューから、 ReSharper -> Windows -> Unit Test Coverage を選択します。ついでに Unit Test Explorer も開いておきます。
Image from Gyazo

Unit Test Explorer ウィンドウから、盾アイコンの Cover Unit Tests を実行して、結果を表示します。
Image from Gyazo

カバレッジの見方

まずは Unit Test Coverage ウィンドウから見ていきます。
今回用意した成功用の MethodA は全ての条件を通るテストコードを用意したので、カバレッジが 100% になりました。一方、失敗用の MethodB は一つの条件しか通っていないため 100% になりませんでした。

次にテスト対象のコードを確認します。
コードの左側にある緑色、赤色、灰色の線が、テストの結果とカバレッジの結果と一致するようになっています。 MethodA はテストが全て成功しているので緑色のみ。 MethodB はテストに失敗した部分が赤色、条件に当てはまるテストがなかった部分に灰色が付いている状態になっています。

カバレッジのレポート出力

dotCover はレポート出力機能も備えているので、開発者以外の関係者に提出するときも便利です。
出力方法は Unit Test Coverage ウィンドウから、右上矢印アイコンの Export coverage report を選択するだけです。形式は HTML / JSON / XML があります。今回は HTML で出力した結果を貼り付けておきます。
Image from Gyazo

備考

今回は単体テストを紹介しましたが、統合テストやウェブサーバーでのカバレッジにも対応しています。もっとたくさんのこと知りたいよ!という方は、参考文献に dotCover のマニュアルへのリンクを記載しておくので見てください。(そして、たくさんの方に広めてください!)

参考文献

dotCover: A Code Coverage Tool for .NET by JetBrains
Get Started - Help | dotCover

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7