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
の順に選択することでインストールが完了します。
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
のテストライブラリを使用しました。 MSTest
と NUnit
も対応しています。
[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
も開いておきます。
Unit Test Explorer
ウィンドウから、盾アイコンの Cover Unit Tests
を実行して、結果を表示します。
カバレッジの見方
まずは Unit Test Coverage
ウィンドウから見ていきます。
今回用意した成功用の MethodA
は全ての条件を通るテストコードを用意したので、カバレッジが 100% になりました。一方、失敗用の MethodB
は一つの条件しか通っていないため 100% になりませんでした。
次にテスト対象のコードを確認します。
コードの左側にある緑色、赤色、灰色の線が、テストの結果とカバレッジの結果と一致するようになっています。 MethodA
はテストが全て成功しているので緑色のみ。 MethodB
はテストに失敗した部分が赤色、条件に当てはまるテストがなかった部分に灰色が付いている状態になっています。
カバレッジのレポート出力
dotCover はレポート出力機能も備えているので、開発者以外の関係者に提出するときも便利です。
出力方法は Unit Test Coverage
ウィンドウから、右上矢印アイコンの Export coverage report
を選択するだけです。形式は HTML
/ JSON
/ XML
があります。今回は HTML
で出力した結果を貼り付けておきます。
備考
今回は単体テストを紹介しましたが、統合テストやウェブサーバーでのカバレッジにも対応しています。もっとたくさんのこと知りたいよ!という方は、参考文献に dotCover のマニュアルへのリンクを記載しておくので見てください。(そして、たくさんの方に広めてください!)
参考文献
dotCover: A Code Coverage Tool for .NET by JetBrains
Get Started - Help | dotCover