我对控制台应用程序的 Main 方法进行单元测试有疑问。标准签名是
public static void Main(string[] args)
我希望能够进行测试以确保只传入 1 个参数。如果传入了多个参数,我希望测试失败。
我不认为我可以用 MOQ 来模拟它作为它的静态方法。
谁有这方面的经验?
有什么想法吗?
谢谢
最佳答案
在您的场景中没有什么可模拟的。静态 Program.Main
是一种与任何其他方法一样的方法,您可以通过调用它来测试它。
static void
方法的问题是您只能验证它是否抛出异常或与输入参数(或其他静态成员,最终)交互。由于在 string[]
上没有任何交互,您可以测试前一个案例。
但是,更合理的方法是将Main
中包含的所有 逻辑委托(delegate)给分离组件并对其进行测试。这不仅可以让您彻底测试输入参数处理逻辑,还可以将 Main
简化为大致如下:
public static void Main(string[] args)
{
var bootstrapper = new Bootstrapper();
bootstrapper.Start(args);
}
关于C# 单元测试 (Nunit) 控制台应用程序的主要方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24507290/