我正在尝试对调用Process.Start并传递.exe可执行路径的方法进行单元测试。我该怎么做,以便我可以断言process.start已被调用,而不必一定要启动外部应用程序。
这是代码示例
public void LaunchApp(string appPath){
var appRun = appPath + "\\.exe";
Process.Start($"{appRun}");Environment.Exit(0);
}
答案 0 :(得分:2)
进行单元测试时最重要的事情之一就是依赖注入。
在使用依赖项注入时(不需要使用框架btw),您可以将应用划分为可重用/可更改的小部分。
例如,在您的情况下,您可能需要一个IAppLauncher
界面
interface IAppLaucher
{
void Launch(string path);
}
然后使用此界面构建多个实现
class ProcessStartLauncher : IAppLauncher
{
public void Launch(string path)
{
Process.Start(path);
}
}
下一步将是使您的主类使用此类。重要的是您可以通过构造函数“注入”接口。
class Program
{
private IAppLauncher _launcher;
public Program(IAppLauncher launcher)
{
_launcher = launcher;
}
public static void Main()
{
_launcher.launch(path);
}
}
您现在可以模拟IAppLauncher
并将模拟传递给构造函数。