Windows Store应用程序的单元测试库中选择的模拟框架是什么?

时间:2012-08-23 01:13:10

标签: unit-testing mocking windows-8

当我编写单元测试时,我喜欢使用Rhino Mocks。

因此,当我开始第一个Windows应用商店应用程序时,我自然而然地开始使用我的单元测试。当我尝试通过RhinoMocks添加NuGet时,我收到了以下错误

  

无法安装软件包'RhinoMocks 3.6.1'。你正试图   将此包安装到目标项目中   '.NETCore,Version = v4.5',但包中不包含任何程序集   与该框架兼容的引用。更多   信息,请联系包裹作者。

我和Moq有同样的问题。

是否有.NETCor的模拟框架,Version = v4.5?

5 个答案:

答案 0 :(得分:15)

大多数模拟框架都基于Reflection.Emit。不幸的是,Reflection.Emit不在WinRT中。这意味着您无法执行动态代理。 (即运行时模拟)。这样就可以预先生成在编译时引用的mocks。我所知道的唯一框架是Moq的实验分支:https://github.com/mbrit/moqrt

答案 1 :(得分:2)

我将其用于Windows Phone 7,应该与Win 8一起使用,因为它只是一个构建后的步骤:

http://dontcodetired.com/blog/post/Introducing-%28probably%29-The-Worlds-Only-Mocking-Framework-for-Windows-Phone-7-%28WP7%29.aspx

答案 2 :(得分:1)

以下是我的建议,请注意我自己还没有测试过这些。 Here是指向讨论前两个选项的文章的链接。

  1. TypeMock隔离器 - 价格昂贵,但看起来它可以完成这项工作
  2. Microsoft Fakes(从MSR的一个名为Moles的项目发展而来)
  3. 您可以使用不同的技术,而不是模拟(或执行依赖注入)。您可以使用参数化注入,只需传递您需要测试的信息。这减少了大型对象到委托和原语,减少了对模拟框架的需求。 Here更多的是关于此问题,包括example技术的实施。

答案 3 :(得分:0)

实际上,Philipp DolderFakeItEasy的贡献者之一已经提出了一种基于便携式类库的有趣且有效的方法。 http://www.planetgeek.ch/2013/02/01/fakeiteasy-and-windows-store-apps-are-becoming-friends/

实质上,他提出了以下解决方案:

  1. 将所有将被TDD编辑的高效代码放入PCL类库,您可以在其中选择您想要支持的任何目标框架
  2. 将您的测试程序集创建为常规类库
  3. 将对FakeItEasy和您选择的测试框架(例如NUnit + FluentAssertions)的引用添加到* .Test程序集
  4. 仅将您无法测试的UI内容放入Windows应用商店应用项目

答案 4 :(得分:-1)

我知道最初的问题已经过时了,但仍有许多人试图在Windows应用商店应用中进行模拟。

我最近开始使用MoqaLate声明:模拟Windows Phone& Windows应用商店应用。 在构建解决方案之后,它实际上是在物理上创建MockingClasses。 因此,在构建之后,您将拥有一个包含类的Mock实现的文件夹。

我认为不是最好的选择。运行时模拟将是理想的,但同时它为我创建了模拟。