VS2017のC#プロジェクトでMsTestの単体テストを作成する方法メモ
テストの追加方法
C# .NET プロジェクトでは以下の操作を行なう
- ファイル => 追加 => プロジェクト を選択
- Visual C#/テスト => 単体テスト プロジェクト(.NET Framework) を選択
- 作成された単体テストプロジェクトの、参照を右クリック => 参照の追加を選択
- プロジェクト => ソリューション からテスト対象のプロジェクトへの参照を追加
基本的な使い方
以下の記事でほとんど説明されているため、以下を参照すると良いと思います。
公式(MSDN): 単体テストの基本
テストユーティリティ
Chaining Assertion
プライベートメソッドとかパラメータを使ったテストとかを書きやすくできるらしい(検証中)
Chaining Assertion - Home
neuecc/ChainingAssertion: Method Chaining base UnitTesting Extension Methods and Dynamic Private Accessor for MSTest, NUnit, xUnit.net.
MSTestでプライベートメソッドのテストを行う(自力) - なか日記
既知の不具合
MSTestのテスト項目がテストエクスプローラーに表示されなくなる
%TEMP%\VisualStudioTestExplorerExtensions
を削除すると表示されました。
%TEMP%
は C:\Users\username\AppData\Local\Temp
あたりになっているはずですが、環境変数を確認してください。
参考:
c# - Unit Tests not discovered in Visual Studio 2017 - Stack Overflow
ReShaperで同様にテストが実行できなくなる
%TEMP%\JetBrains\ReSharperPlatformVs15\vAny_XXXXXX
を削除すると表示されました。
.NET 4.5 から .NET 4.6 環境に上げるとでVisualStudioで動作しなくなる(コマンドラインからは実行できる)
NuGetのパッケージで以下のパッケージの両方が入っているか確認してください。
(自分の場合はMSTest.TestAdapterだけが入っていなくて動作しませんでした)
- MSTest.TestFramework
- MSTest.TestAdapter