无法将 ReactiveUI 添加到 NUnit 测试项目

Posted

技术标签:

【中文标题】无法将 ReactiveUI 添加到 NUnit 测试项目【英文标题】:Can't add ReactiveUI to a NUnit Test Project 【发布时间】:2015-11-30 14:03:03 【问题描述】:

我目前正在尝试设置 Unit 以使用 NUnit 和 Moq 对我们的 ReactiveUI ViewModel 进行单元测试。但是我无法让它工作。我无法将 ReactiveUI 添加到 NUnit 测试库(无法解析依赖项 'Rx-Xaml (≥ 2.2.5)'),也无法将 Moq 添加到 PCL 项目中。

甚至可以使用 NUnit 和 Moq 对 ReactiveUI ViewModel 进行单元测试吗?

顺便说一句:我在 Mac OSX 10.10.5 上使用 Xamarin Studio,但代码在 Windows 10 上运行良好:(

在 OSX 上我得到一个 Unix 传输错误,但在 Windows 上测试确实有效。

【问题讨论】:

您的目标框架是什么? cf reactiveui nuspec 我认为您需要定位一个 not 参考 Rx-Xaml 【参考方案1】:

好的,我知道了,但是如果不手动编辑 csproj 文件,它就无法工作。这里是其他人的快速解释,他们在 Mac 上结合使用 reactui 和 xamarin studio 为 xamarin.android/ios 项目运行测试。

    使用 xamarin.installer 安装 xamarin.mac

    打开您的解决方案并从“Mac”“库”-“统一 API”树中添加一个新库项目。

    删除所有不需要的文件,例如 Main.cs 或 AppDeletage.cs

    打开添加解决方案的Options,在“Build”-“General”下将Target Framework从“Xamarin.Mac Mobile Framework”切换到“Xamarin.Mac .Net 4.5 Framework”。

    添加您的包裹。不要忘记 Nunit 和响应式测试。

    打开新项目的 csproj 文件并将路径部分从 Net45 更改为 Xamarin.Mac10 以获取 Splat 和 ReactiveUI 引用。请参阅示例代码。

    运行你的测试并快乐

损坏的参考文献:

<Reference Include="ReactiveUI">
  <HintPath>..\packages\reactiveui-core.6.5.0\lib\Net45\ReactiveUI.dll</HintPath>
</Reference>
<Reference Include="Splat">
  <HintPath>..\packages\Splat.1.6.2\lib\Net45\Splat.dll</HintPath>
</Reference>`

固定引用:

<Reference Include="ReactiveUI">
  <HintPath>..\packages\reactiveui-core.6.5.0\lib\Xamarin.Mac10\ReactiveUI.dll</HintPath>
</Reference>
<Reference Include="Splat">
  <HintPath>..\packages\Splat.1.6.2\lib\Xamarin.Mac10\Splat.dll</HintPath>
</Reference>

作为参考,这是我们的工作 csproj 文件https://gist.github.com/omares/e4bccf5a90524f2482f9

【讨论】:

按照步骤操作,我收到错误:System.IO.FileNotFoundException:无法加载文件或程序集“系统,版本=2.0.5.0,文化=中性,PublicKeyToken=7cec85d7bea7798e”或其之一依赖关系。有什么想法吗?【参考方案2】:

这里有同样的问题。它对我们不起作用的原因是在 PortableLibraryStubs 的 PlatformRegistrations 类中。我们在单元测试项目中没有平台实现它,这就是它失败的原因。

这是一个关于如何使事情正常工作的非常肮脏的 hack (https://github.com/OlexaLe/ReactiveUI/commit/c8a8292fde7a0617338110c55bfbf8c7d6947e1d),这是一个用于跟踪的拉取请求 (https://github.com/reactiveui/ReactiveUI/pull/1008) 的链接 - 也许有一天它会出现在 master 中:-)。

希望对您有所帮助。谢谢!

【讨论】:

以上是关于无法将 ReactiveUI 添加到 NUnit 测试项目的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Avalonia.ReactiveUI 中使用 Autofac 作为 DI 容器?

如何将 RShiny reactiveFileReader 与 reactiveUI 和不存在的文件一起使用?

ReactiveUI:如何实现定期刷新的ReactiveList

你如何用 NUnit 测试私有方法?

无法使用 Visual Studio Lightswitch 进行调试

ReactiveUI 中的 Xamarin.Forms 控件是不是需要自定义绑定?