コンソールアプリのMainメソッドの単体テストについて質問があります。標準の署名は
public static void Main(string[] args)
1つのパラメーターのみが渡されることを確認するためにテストできるようにしたい。複数のパラメーターが渡される場合、テストを失敗させたい。
静的メソッドとしてMOQを使用してこれをモックすることはできないと思います。
誰かこれについて何か経験がありますか?
何か案は ?
ありがとう
あなたのシナリオでモックするものは何もありません。 Static Program.Main
は他のメソッドと同じように、それを呼び出すことによってそのようにテストします。
static void
メソッドの問題は、例外をスローするか、入力引数(または最終的には他の静的メンバー)と対話するかどうかしか確認できないことです。 string[]
には対話するものがないため、前者のケースをテストできます。
ただし、より適切なアプローチは、Main
に含まれるallロジックを委任して、コンポーネントを分離し、代わりにテストすることです。これにより、入力引数処理ロジックを徹底的にテストできるだけでなく、Main
を多かれ少なかれ次のように簡略化できます。
public static void Main(string[] args)
{
var bootstrapper = new Bootstrapper();
bootstrapper.Start(args);
}