如何对测试Process.Start并采用.exe路径的方法进行单元测试

时间:2019-04-23 12:03:48

标签: c# visual-studio unit-testing process.start justmock

我正在尝试对调用Process.Start并传递.exe可执行路径的方法进行单元测试。我该怎么做,以便我可以断言process.start已被调用,而不必一定要启动外部应用程序。

这是代码示例

public void LaunchApp(string appPath){
    var appRun = appPath + "\\.exe";

     Process.Start($"{appRun}");Environment.Exit(0);
}

1 个答案:

答案 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并将模拟传递给构造函数。