问题标签 [microsoft-fakes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unit-testing - 模拟框架与 MS Fakes 框架
对 NMock 与 VS 2011 Fakes Framework 等 Mock 框架的差异有点困惑。通过 MSDN,我了解到 Fakes 允许您像 RhinoMock 或 NMock 一样模拟您的依赖项,但是方法不同,Fakes 生成代码来实现此功能,但 Mocks 框架没有。那么我的理解正确吗?Fakes 只是另一个 Mock 框架吗
moles - 使用文件 licenses.licx 的痣和许可
我有痣和文件 licenses.licx 的问题。我在互联网上搜索,但没有找到有用的答案。
问题是,我们正在使用许可的第三方产品库,它需要存储在文件 licenses.licx 中的许可证密钥。我们将此产品库称为 Product.dll。
我们将此文件存储在项目的 Properties 文件夹中,我们在其中引用了许可的 Product.dll。我们称这个项目为 Proj1。
然后我们有 unittest 项目 (Proj1.UnitTest),我们在其中引用项目 Proj1 和库 Product.dll。然后我们为它们添加 moles 程序集,因此我们引用了 Proj1.Moles 和 Product.Moles。
如果我们对 Proj1 或 Product 没有属性 [HostType("Moles")] 的方法运行任何测试,则测试通过没有任何问题。
但是,如果我们需要修改任何方法,并使用属性 [HostType("Moles")] 运行测试方法,那么每次调用 Product 方法时都会显示许可证对话框。这使得我们的单元测试不再可能。
你能帮我解决这个问题吗?
我在 Pex 和 Moles 网页上读到,它们正在成为 MS VS 11 的一部分。
除了在 MS VS 11 中的集成之外,在开发或错误修复方面是否有任何其他进展?因为最新版本真的很旧 - 2010 年 11 月 1 日的 0.94.51023.0。
提前感谢您的回答。
问候
简。
microsoft-fakes - 模拟功能是否可用于 Microsoft Fakes?
随着 Visual Studio 11 中包含 Microsoft Fakes,我认为值得再次研究,因为我上次检查时发现 Moles 不够成熟。文档仍然很少,但我找不到任何对模拟的引用,即设置和验证对伪造对象的期望的能力。
有谁知道这当前是否包含(作为库中的一个功能)或将包含?
unit-testing - 如何验证是否调用了 Microsoft Fakes(测试版)存根/垫片(如 Rhino Mocks 中的 AssertWasCalled)?
我在 Visual Studio 11 中使用 Microsoft Fakes 测试版。如何验证我的测试系统是否调用了依赖项的方法?
c# - Ms Fakes 框架,NotSupportedException
为什么此代码会在运算符中抛出 ShimNotSupportedException?
c# - 如何在 VS 2012 Professional RC 中添加假货程序集?
根据下面关于 VS 2012 和 Microsoft Fakes Test Framework 的两篇文章,我应该能够在我的测试项目的引用中右键单击一个程序集,然后选择“添加 Fakes 程序集”以在 Visual Studio 11 中创建一个新的 Microsoft Fakes 框架程序集/ 2012. 但是我没有在 VS 2012 RC Professional 中找到它应该在的上下文菜单项。我可能需要引用 Microsoft.QualityTools.Testing.Fakes 程序集,但在添加引用搜索中也找不到它。自测试版以来,所需的菜单是否发生了变化?我需要安装扩展程序吗?
如何在 VS 2012 Professional RC 中添加假货程序集?
参考文章:
visual-studio-2010 - Microsoft Fakes 可以在 Visual Studio 2010 中使用吗?
我们有使用 Visual Studio 2010 专业版的开发人员和一些试用 Visual Studio 2012 的开发人员。两个版本之间的项目兼容性很好。
如果我们引入新的 Fakes Framework 进行单元测试,Visual Studio 项目是否仍与 2010 兼容?
c# - MS VisualStudio 2012 中的 ShimNotSupportedException
我只是想熟悉 Visual Studio 2012 RC 中新的 Fakes 隔离框架,但我因此面临ShimNotSupportedException
s.
在第一次尝试时,我尝试将委托连接到的每个单一 shim 方法ShimNotSupportedException
在尝试运行/调试测试时都抛出了一个。
这是相应的堆栈跟踪:
GetFoo_ValidBar_ReturnsBaz 测试方法引发了异常:Microsoft.QualityTools.Testing.Fakes.Shims.ShimNotSupportedException: System.DateTime at Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.InvokeEvent(T value, Action1 eh) at Microsoft.QualityTools。 Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.OnAttachedUnsupportedMethod(MethodBase 方法) 在 Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.CheckInstrumentation(MethodBase 方法) 在 Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.InternalAttachDetour(Object optionalReceiver, MethodBase方法,委托 detourDelegate) 在 Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.AttachDetour(Object optionalReceiver,Microsoft.QualityTools.Testing.Testing.Fakes.Shims.ShimRuntime.SetShimMethod(Delegate optionalStub, Object optionalReceiver, MethodBase method) 在 Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShim(Delegate optionalStub, Type receiverType) 的 MethodBase 方法,委托 detourDelegate) , Object optionalReceiver, String name, ShimBinding flags, Type returnType, Type[] parameterTypes) at Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShimPublicStatic(Delegate optionalStub, Type receiverType, String name, Type returnType, Type[] parameterTypes)在 BazTests.cs 中的 GetFoo_ValidBar_ReturnsBaz() 处的 System.Fakes.ShimDateTime.set_NowGet(Func'1 value):第 48 行。MethodBase 方法)在 Microsoft.QualityTools.Testing.Fakes 的 Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShim(Delegate optionalStub, Type receiverType, Object optionalReceiver, String name, ShimBinding flags, Type returnType, Type[] parameterTypes)在 Microsoft.QualityTools.Testing.Fakes。 Shims.ShimRuntime.SetShimPublicStatic(Delegate optionalStub, Type receiverType, String name, Type returnType, Type[] parameterTypes) at System.Fakes.ShimDateTime.set_NowGet(Func'1 value) at GetFoo_ValidBar_ReturnsBaz() in BazTests.cs:第 48 行。MethodBase 方法)在 Microsoft.QualityTools.Testing.Fakes 的 Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShim(Delegate optionalStub, Type receiverType, Object optionalReceiver, String name, ShimBinding flags, Type returnType, Type[] parameterTypes)在 Microsoft.QualityTools.Testing.Fakes。 Shims.ShimRuntime.SetShimPublicStatic(Delegate optionalStub, Type receiverType, String name, Type returnType, Type[] parameterTypes) at System.Fakes.ShimDateTime.set_NowGet(Func'1 value) at GetFoo_ValidBar_ReturnsBaz() in BazTests.cs:第 48 行。在 BazTests.cs 的 GetFoo_ValidBar_ReturnsBaz() 中的 System.Fakes.ShimDateTime.set_NowGet(Func'1 value) 处键入接收器类型、字符串名称、类型 returnType、Type[] parameterTypes):第 48 行。在 BazTests.cs 的 GetFoo_ValidBar_ReturnsBaz() 中的 System.Fakes.ShimDateTime.set_NowGet(Func'1 value) 处键入接收器类型、字符串名称、类型 returnType、Type[] parameterTypes):第 48 行。
在阅读了我在 MSDN 上找到的处理此问题的两个线程后,我按照他们的说明(关闭 CodeCoverage,删除 .testsettings 文件)对我不起作用!
尽管如此,我还是找到了解决此问题的方法:
首先从测试资源管理器运行所有测试(而不是直接在编码区域之外使用“MSTest 测试(单击以运行)”按钮),一切正常并且没有抛出异常。之后我什至可以调试测试并且分配给 shim 方法的工作与预期一样。
这也适用于我使用的所有以下垫片。
但是现在我在尝试实现 MS Enterprise Library 的伪造品以进行数据库访问时又遇到了同样的问题。
这是测试的样子:
前两个 shim 分配(ShimFoo 和 ShimQux)按预期工作。但是 ShimDatabaseFactory.CreateDatabaseString (这应该使 DatabaseFactory.CreateDatabase(string) 在尝试创建新数据库实例时返回一个存根数据库)再次引发 ShimNotSupportedException。我就是不知道为什么!
你知道这里出了什么问题吗?
我将不胜感激对此的任何意见。
谢谢,
本杰明
c# - 如何使用 Microsoft Fakes Shim 隔离(绕行)类的构造函数?
是否有可能用 Microsoft Fakes 隔离/替换类的构造函数?
找到了 Mole(Fakes 的前身)的示例:http: //thecurlybrace.blogspot.co.at/2011/11/how-do-i-detour-mole-type-constructor.html
我尝试过这样的构造
但它说 get 访问器丢失。为了澄清,更换类似的东西会很好
像这样的静态输入
这样我就不必模拟 Read、ReadLine 等。
visual-studio-2010 - 在 Visual Studio 2012 中编译 Moles 时出现错误“类型或命名空间 xxxx 不存在”
我正在尝试编译在 Visual Studio 2010 中开发的现有项目(目标 .NET4),现在正在测试迁移到 VS2012。
当我用 moles 编译现有项目时,我经常收到以下错误。
命名空间“System.Security.Claims”中不存在类型或命名空间名称“Claim”(您是否缺少程序集引用?) [C:\ProjectPath\Project.Tests.Unit\obj\Debug\Moles\m\ mgcsproj] C:\ProjectPath\Project.Tests.Unit\mgcs
显示此消息的各种类型的巨大列表。
有什么想法吗?