<前提>
C#プロジェクトの単体テストコード作成を行っています。
単体テストはMSTestで行っています。
テスト対象関数が呼び出す関数は、Mockクラス使用で関数処理差し替えをしています。
Mock使用では、public以外のクラス、関数やvirtual修飾子無しでは差し替えることができないため、テスト対象関数名などのシンボル定義名の場合のみに制限を掛けるなどして、修飾子切り替えなどを行っています。
例)
●テスト対象関数
C#
1public void Method1(){}
●テスト対象関数が呼び出す関数
C#
1#if TEST_METHOD1 2 public virtual void Method2() 3#else 4 private void Method2() 5#endif 6 {}
Method1がテスト対象関数の場合のみ、条件付きコンパイルシンボルにTEST_METHOD1を入れてリビルドしてテストを実行します。
そのほか、関数内で別クラスのインスタンスを生成して使用するような動作をする関数テストでは、インスタンス生成対象のクラスにユニットテスト用クラスを作り、関数修飾子と同様にシンボル定義でクラスや実行結果を切り替えるようにしています。
<質問内容>
テスト手順の削減を行う方法は何かないでしょうか?
今のテスト手順が「条件付きコンパイルシンボル変更」⇒「ビルド」⇒「テスト実行」と、手順が多いほか、1回実行でテストケースの全網羅ができません。
Stub、Shimなどは見かけたのですが、Visual StudioのProfessionalは対象外だそうなので、検討が行き詰ってしまっております。
<補足情報>
プロジェクトのクラスに一律インターフェースを設けてデリゲートで、という方法案は調査していて見つかりました。
ただ、実処理コードは一旦完成の位置づけとなり、テストで困っているから構造見直しからやり直す、というのは作業期間や客先再レビューが困難なため、対応は見送りとしています。
実処理コード側のクラスファイルの編集については、既存の#ifなどによる修飾子切り替え処理を変更・削除するくらいが許容されます。
<開発環境>
・.Net Framework 4.6
・Visual Studio 2015 Professional

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/06 13:49
2019/03/06 14:48
2019/03/08 04:58