17

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

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

无法安装软件包“RhinoMocks 3.6.1”。您正在尝试将此包安装到以“.NETCore,Version=v4.5”为目标的项目中,但该包不包含与该框架兼容的任何程序集引用。有关详细信息,请联系包作者。

我对起订量有同样的问题。

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

4

5 回答 5

15

大多数模拟框架都基于Reflection.Emit. 不幸Reflection.Emit的是不在 WinRT 中。这意味着你不能做动态代理。(即运行时模拟)。这留下了在编译时引用的模拟的预生成。我知道的唯一框架是 Moq 的一个实验分支:https ://github.com/mbrit/moqrt

于 2012-08-25T03:54:55.760 回答
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

于 2013-04-24T08:56:21.033 回答
1

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

  1. TypeMock Isolator - 昂贵,但看起来可以完成这项工作
  2. Microsoft Fakes(从 MSR 的一个名为 Moles 的项目演变而来)
  3. 您可以使用不同的技术,而不是模拟(或进行依赖注入)。您可以使用参数化注入并只传递您需要测试的信息。这将大对象简化为委托和原语,从而减轻了对模拟框架的需求。这里有更多关于这一点的内容,包括一个实际应用的技术示例
于 2012-08-27T00:26:28.143 回答
0

实际上,FakeItEasy的贡献者之一Philipp Dolder提出了一种基于可移植类库的有趣且可行的方法。 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 Store App 项目中
于 2013-02-01T09:57:29.767 回答
-1

我知道最初的问题已经过时了,但我们中的许多人仍然试图在 Windows 应用商店应用程序中完成模拟。

我最近开始使用MoqaLate,它指出:Mocking for Windows Phone & Windows Store apps。在您构建解决方案之后,它实际上会物理创建 MockingClasses。因此,在构建之后,您将拥有一个文件夹,其中包含您的类的一些 Mock 实现。

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

于 2015-07-30T13:28:52.637 回答