无法将 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