使用NUnit和PCL

8

我在尝试让NUInt和PCL库协调时,遇到了各种问题。我的PCL库是面向.NET 4.5、Silverlight 4及更高版本、Windows Phone 7.5、Windows Store、Mono for Android和MonoTouch(最后两个使用Xamarin)。但是,当我通过NuGet尝试将NUnit添加到该项目中时,似乎已经添加成功了(nunit.framework已添加到引用),但是NUnit命名空间不可用。如果我尝试添加using NUnit.Framework,Visual Studio会将其下划线化,如果我尝试构建,就会出现关于NUnit命名空间无法找到的错误以及以下警告:

Warning 2   The primary reference "nunit.framework" could not be resolved because it has an indirect dependency on the framework assembly "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETPortable,Version=v4.0,Profile=Profile104". To resolve this problem, either remove the reference "nunit.framework" or retarget your application to a framework version which contains "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".

NUnit是否可以与PCL配合使用?看起来mvvm cross教程可以做到。
我尝试为测试创建一个单独的项目(普通的类库),并且可以将NUnit添加到该项目中,但是我似乎无法将引用添加到我的PCL库(我想要测试的那个库),所以也没有帮助。
有任何想法吗?

2
如果你仔细研究一下你所提到的MvvmCross项目,你会发现测试单元项目本身并不是一个PCL,而是一个.NET 4.5项目。据我所知,由于NUnit本身不是一个PCL程序集,所以无法在PCL项目中引用NUnit。策略应该是创建一个特定平台(例如.NET 4、4.5)的单元测试项目,该项目引用NUnit和待测试的PCL库。如果你仍然遇到问题,你确定PCL库是否针对你的单元测试项目平台进行了定位? - Anders Gustafsson
2
正如Anders所说,NUnit不支持在PCL程序集中编写测试。有关PCL测试的一般信息,请参阅我对以下问题的回答:https://dev59.com/PnPYa4cB1Zd3GeqPeQgi - Daniel Plaisted
1个回答

3
这个观点有缺陷,但我还是会提出来...
在.NET 4.5库中编写和运行单元测试,并从那里引用您的PCL库。单元测试的目标是测试逻辑。虽然不同的PCL“目标版本”可能存在一些差异(未实现的方法等),但我认为以这种方式测试代码将覆盖99%的情况。
此外,如果您想对逻辑进行“真正”的测试,您需要在要测试的设备上运行单元测试...然后每个操作系统版本...以及具有不同CPU的不同设备。你想走多远?
您提到无法从“常规”测试库添加对PCL的引用...您遇到了什么样的错误?我一直在使用这种方法来测试我的PCL逻辑,它像魅力一样工作,也许不是完美的,但对于1%的情况,在设备上存在差异并且事情失败时...我有一个异常处理程序记录到服务器 :-)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接