web-dev-qa-db-ja.com

C#ユニットテスト(Nunit)コンソールアプリの主な方法は?

コンソールアプリのMainメソッドの単体テストについて質問があります。標準の署名は

  public static void Main(string[] args)

1つのパラメーターのみが渡されることを確認するためにテストできるようにしたい。複数のパラメーターが渡される場合、テストを失敗させたい。

静的メソッドとしてMOQを使用してこれをモックすることはできないと思います。

誰かこれについて何か経験がありますか?

何か案は ?

ありがとう

12
Martin

あなたのシナリオでモックするものは何もありません。 Static Program.Mainは他のメソッドと同じように、それを呼び出すことによってそのようにテストします。

static voidメソッドの問題は、例外をスローするか、入力引数(または最終的には他の静的メンバー)と対話するかどうかしか確認できないことです。 string[]には対話するものがないため、前者のケースをテストできます。

ただし、より適切なアプローチは、Mainに含まれるallロジックを委任して、コンポーネントを分離し、代わりにテストすることです。これにより、入力引数処理ロジックを徹底的にテストできるだけでなく、Mainを多かれ少なかれ次のように簡略化できます。

public static void Main(string[] args)
{
    var bootstrapper = new Bootstrapper();
    bootstrapper.Start(args);
}
23
k.m