如何对创建新进程的代码进行单元测试?

Sch*_*ime 5 c# tdd unit-testing

我该如何测试以下方法?

它是接口的具体类实现的方法.

Process用一个只暴露我需要的方法和属性的接口包装了类.本ProcessWrapper类是具体实现这个接口.

    public void Initiate(IEnumerable<Cow> cows)
    {
        foreach (Cow c in cows)
        {
            c.Process = new ProcessWrapper(c);
            c.Process.Start();
            count++;
        }
    }
Run Code Online (Sandbox Code Playgroud)

Bri*_*sen 4

有两种方法可以解决这个问题。第一种是使用依赖注入。您可以注入一个工厂并调用创建方法来获取测试所需的Initiate()类型。ProcessWrapper

另一个解决方案是使用模拟框架(例如 TypeMock),它可以让您解决这个问题。TypeMock 基本上允许您模拟任何内容,因此您可以使用它来提供模拟对象而不是实际的 ProcessWrapper 实例。