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)