我目前正在尝试使用NUnit和Moq设置Unit来对我们的ReactiveUI ViewModels进行单元测试。但是,我无法让它发挥作用。我无法将ReactiveUI添加到NUnit测试库(无法解析依赖关系' Rx-Xaml(≥2.2.5)'),我无法将Moq添加到PCL项目
甚至可以使用NUnit和Moq单元测试ReactiveUI ViewModels吗?
Btw:我在Mac OSX 10.10.5上使用Xamarin Studio,但代码在Windows 10上正常运行:(在OSX上我遇到了Unix传输错误,但在Windows上测试确实有效。
答案 0 :(得分:0)
这里有同样的问题。它不适用于我们的原因是来自PortableLibraryStubs的PlatformRegistrations类。我们在单元测试项目中没有它的平台实现,这就是它失败的原因。
这是一个非常糟糕的黑客攻击,如何使事情有效(https://github.com/OlexaLe/ReactiveUI/commit/c8a8292fde7a0617338110c55bfbf8c7d6947e1d),这里有一个链接拉动请求(https://github.com/reactiveui/ReactiveUI/pull/1008)进行跟踪 - 也许有一天这将是主人: - )。
希望有所帮助。谢谢!
答案 1 :(得分:0)
好的,我知道了,但是如果不手动编辑csproj文件就行不通。这里有一个快速解释,其他任何人都在使用macamarin.android/ios项目在mac上运行他们的测试,并与xamarin工作室结合使用。
使用xamarin.installer安装xamarin.mac
打开您的解决方案并从" Mac"添加新的图书馆项目"图书馆" - "统一API"树。
删除所有不需要的文件,例如Main.cs或AppDeletage.cs
打开已添加解决方案的选项,并从#34; Xamarin.Mac Mobile Framework"切换目标框架。到" Xamarin.Mac .Net 4.5 Framework"在" Build" - "将军"。
添加您的包裹。不要忘记Nunit和reactiveui-testing。
打开新项目的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