C#单元测试(Nunit)控制台应用程序的主要方法?

Mar*_*tin 12 c# nunit unit-testing console-application

我有一个关于单元测试控制台应用程序的主要方法的问题.标准签名是

  public static void Main(string[] args)
Run Code Online (Sandbox Code Playgroud)

我希望能够测试以确保只传入1个参数.如果传递了多个参数,我希望测试失败.

我不认为我可以用MOQ作为静态方法来模拟这个.

有人对此有经验吗?

有任何想法吗 ?

谢谢

k.m*_*k.m 23

你的场景中没有什么可以模拟的.静态Program.Main是一种方法,就像其他方法一样,你可以通过调用它来测试它.

static void方法的问题在于,您只能验证它是抛出异常还是与输入参数(或最终的其他静态成员)进行交互.由于没有任何可以与之交互的内容,string[]您可以测试以前的案例.

但是,更合理的方法是将包含在其中的所有逻辑委托Main给单独的组件并进行测试.这不仅可以让您彻底测试输入参数处理逻辑,还可以简化Main为或多或少:

public static void Main(string[] args)
{
    var bootstrapper = new Bootstrapper();
    bootstrapper.Start(args);
}
Run Code Online (Sandbox Code Playgroud)