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

时间:2014-07-01 09:52:09

标签: c# unit-testing nunit console-application

我对单元测试控制台应用的主要方法有疑问。标准签名是

  public static void Main(string[] args)

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

我不认为我可以用MOQ作为静态方法来嘲笑它。

任何人都有这方面的经验吗?

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:22)

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

static void方法的问题在于,您只能验证它是抛出异常还是与输入参数(或最终的其他静态成员)交互。由于string[]上无法与之互动,因此可以测试以前的案例。

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

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