加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何在Process.Start上使用Microsoft Fakes Assemblies

发布时间:2020-12-16 01:57:05 所属栏目:百科 来源:网络整理
导读:我想模拟System.Diagnostics.Process.Start调用,所以我为系统程序集添加了一个Fakes Assembly. 问题是Start是System.Diagnostics.Process上的一个静态方法,所以我没有得到一个垫片能够为Start方法的委托. 这样做的正确方法是什么? 解决方法 首先,您需要为Pr
我想模拟System.Diagnostics.Process.Start调用,所以我为系统程序集添加了一个Fakes Assembly.

问题是Start是System.Diagnostics.Process上的一个静态方法,所以我没有得到一个垫片能够为Start方法的委托.

这样做的正确方法是什么?

解决方法

首先,您需要为Process类生成Shim.

在创建Fakes for System后,您应该会看到一个名为“Fakes”的文件夹.在该文件夹中,您需要编辑System.fakes文件,以便它将生成Shims for System.Diagnostics.Process:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true">
  <Assembly Name="System" Version="4.0.0.0"/>
  <ShimGeneration>
    <Add FullName="System.Diagnostics.Process"/>
  </ShimGeneration>
</Fakes>

在编译之后,您将能够在对象资源管理器中看到Fakes Shims for Process已被生成.

要在测试中使用Shim,您需要配置Fake Process.Start委托.测试可能最终看起来像这样:

using (ShimsContext.Create())
{
    System.Diagnostics.Fakes.ShimProcess.StartString = s =>
    {
        Console.WriteLine(s);
        return new StubProcess();
    };

    // A call to your method under test that exectues Process.Start rather than calling it directly
    var process = Process.Start("SomeString");
    Assert.IsTrue(process is StubProcess);
}

显然,您可能希望在委托和断言中包含与场景测试更相关的内容.

见MSDN link

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读