C#とSQLServerを繋いでデータを操作する4つの方法 PR

Fine Code Coverageのカバレッジが.NETFrameworkだと動作しない問題の解決方法

記事内に商品プロモーションを含む場合があります

C#ではVisualStudioに機能追加できるFine Code Coverageというツールを使ってテストコードのカバレッジをとることができますが、最近になってうまくカバレッジが表示されなくなったというご質問をいただきました。

私のほうで確認したところ、.NET8などを使ったテストプロジェクトでは正常に動作しましたが、
どうも.NETFrameworkでの単体テストでは、今回の現象が再現しているようです。

現象

「CCC」という.NETFrameworkのクラスライブラリと、UnitTestProdect1という.NETFrameworkの単体テストプロジェクトがある状態です。

CCCプロジェクトの内容

CCCにはClass1とClass2というクラスがあり、それぞれ2つずつメソッドがあります

namespace CCC
{
  public static class Class1
  {
    public static int CaseA(int a, int b)
    {
      return a + b;
    }

    public static int CaseB(int a, int b)
    {
      return a - b;
    }
  }

  public static class Class2
  {
    public static int CaseA(int a, int b)
    {
      return a + b;
    }

    public static int CaseB(int a, int b)
    {
      return a - b;
    }
  }
}

 

単体テストプロジェクトの内容

単体テストプロジェクトには、Class1のCaseAのテストのみを行っています。

namespace UnitTestProject1
{
  [TestClass]
  public class UnitTest1
  {
    [TestMethod]
    public void TestMethod1()
    {
      Assert.AreEqual(3, Class1.CaseA(1, 2));
    }
  }
}

ですので、Class1のカバレッジは50%、Class2は0%になるはずです。しかし、この状態でテストを実施してFine Code Coverageの結果を見ると、次のような結果になります。

結果は100%になっており、しかも単体テストプロジェクトしか対象になっていません。

対処方法

対処方法は、Fine Code Coverageの設定画面で、
IncludeReferencedProjectsをTrueにするとうまく動作しました。

VisualStudioのツールからオプションを選び、

Fine Code Coverageの「IncludeReferencedProjects」をTrueにします。

テストの再実行

この状態でテストコードを再実行し、Fine Code Coverageの結果を確認します。

これで正しくカバレッジが採れていることが確認できました。

 

 

C#とSQLServerを繋いでデータを操作する4つの方法

#01_はじめに
#02_VisualStudio2022のインストール
#03_SQLServerのインストール
#04_データベースとテーブルの作成
#05_プロジェクトの作成
#06_接続先文字列の作成
#07_データテーブルでのデータの取得
#08_Sqlアクセスクラスの作成
#09_SqlDataReaderでのデータ取得
#10_SqlDataReaderの結果をカスタムクラスに入れる方法
#11_SqlCommandでInsert文を発行する方法
#12_SqlCommandでUpdate文を発行する方法
#13_Update対象がなかったらInsertする方法
#14_SqlCommandでDelete文を発行する方法
#15_Dapperでデータを取得する方法
#16_DapperでInsert文を発行する方法
#17_EntityFrameworkをインストールしてDbContextを作成する方法
#18_EntityFrameworkでデータを取得する方法
#19_EntityFrameworkでInsert文を発行する方法
#20_EntityFrameworkでUpdate文を発行する方法
#21_EntityFrameworkでDelete文を発行する方法
#22_Helperクラスを作ってSqlCommand操作を共通化する方法
#23_パフォーマンスチェックの方法
#24_4つのデータのとり方のパフォーマンスチェック
#25_4つの結果を踏まえて講評
#26_さいごに

下記URLは、ベネッセが提供する教育用プラットフォームにて
私が公開しているプログラミング学習コースです。
無料コースもあるので、よかったらご覧になってみてください。
【無料動画】「C#を勉強する順番」

Udemyで販売しているC#のコースを 1つプレゼントします!