Visual Studio 2019 で、新規プロジェクト作成と同時に、テスト用のプロジェクトも作成し、テスト駆動開発できるようにする為の覚え書きです。
前提として、個人でC#を勉強中の身に過ぎず、プログラマとしての業務経験はありません。テスト駆動ってこんな感じかなーと探り探り進めている状態です。
使用製品
- Microsoft Visual Studio Community 2019 Version 16.11.4
- MsTest
なぜMSTest かというと、参考にしたサイトが MSTest を使っていたからです。
プロジェクト作成時にやること
-
新規プロジェクトを作成する
-
テスト用のプロジェクトを作成する
-
作成したプロジェクトの親になるソリューションを右クリック→追加 → 新しいプロジェクト
-
「新しいプロジェクトを追加」画面で、「単体テスト プロジェクト (.NET Framework)を選択
-
「新しいプロジェクトを構成します」画面になるので、テスト用プロジェクトのプロジェクト名を入力。場所はソリューションのフォルダと同じでよい
-
プロジェクト間の参照設定をする
-
ソリューションエクスプローラで、テスト用プロジェクトの「参照」を右クリック→参照の追加→
-
「参照マネージャー」でプロジェクトタブを選択 → テスト対象のプロジェクト(最初に新規作成したプロジェクト)にチェックを入れる
-
テスト用クラスのテンプレートをインポートする
- テスト用プロジェクトを右クリック → 追加 → 既存の項目
- または Shift + Alt + A
テスト用クラスのテンプレート
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
namespace UnitTest
{
[TestClass]
public class UnitTest1
{
static Namespace.Class1 _TargetClass = null;
// テスト前の処理
[ClassInitialize()]
public static void ClassInitialize(TestContext testContext)
{
_TargetClass = new Namespace.Class1 ();
}
// テスト後の処理
[ClassCleanup()]
public static void ClassCleanup()
{
_TargetClass = null;
}
//テスト本体
[TestMethod()]
public void Class1_Test()
{
}
}
}
テストを書いていく際の備忘録
プライベートメソッドをテストしたい場合
privateメソッドをテストするには、PrivateObjectクラスのInvokeメソッドを使用します。
山本隆の開発日誌 - MSTestでprivateメソッドをテストする
その他、private static、親クラスのprivate メソッド等々、privateメソッドのテストについては上記ページで事足りる。
なお、.NET Core では PrivateObject クラスが廃止されており、private メソッドのテストは推奨されない模様
PrivateObject and PrivateType are not available for a project targeting netcorapp2.0 #366