我对单元测试控制台应用的主要方法有疑问。标准签名是
public static void Main(string[] args)
我希望能够测试以确保只传入1个参数。如果传递了多个参数,我希望测试失败。
我不认为我可以用MOQ作为静态方法来嘲笑它。
任何人都有这方面的经验吗?
有什么想法吗?
由于
答案 0 :(得分:22)
在你的场景中没有什么可以模拟的。静态Program.Main
是一个方法,就像其他方法一样,你可以通过调用它来测试它。
static void
方法的问题在于,您只能验证它是抛出异常还是与输入参数(或最终的其他静态成员)交互。由于string[]
上无法与之互动,因此可以测试以前的案例。
但是,更合理的方法是将Main
中包含的所有逻辑委托给单独的组件并进行测试。这不仅可以让您彻底测试输入参数处理逻辑,还可以将Main
简化为或多或少:
public static void Main(string[] args)
{
var bootstrapper = new Bootstrapper();
bootstrapper.Start(args);
}