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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |