我正在尝试对我创建的可移植类库进行单元测试,并且我想确保它使用与其目标相同的框架子集进行测试。
Per the Visual Studio ALM + Team Foundation Server blog,MSTest单元测试框架在Visual Studio 2012 RC中转换为PCL;但是,我无法创建可移植的类库,然后在VS2012 RTM中引用MSTest框架。
Microsoft.VisualStudio.QualityTools.UnitTestFramework
会产生未找到引用的构建错误。C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
添加手动直接程序集引用会产生构建警告,指出UnitTestFramework程序集引用了不兼容的mscorlib
版本。我确实找到了(感谢早期答案),项目类型Unit Test Library (Windows Store apps)
引用了C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs\MSTestFramework\11.0\References\CommonConfiguration\neutral\Microsoft.VisualStudio.TestPlatform.UnitTestFramework.dll
处的不同的 MSTest程序集。此项目类型创建一个小的无UI Windows应用程序应用程序...完成清单和所有内容。它也不允许我指定我所针对的框架 - 它似乎仅适用于Windows应用商店应用。
在潜在错误的假设下,我应该使用单元测试程序集测试我的可移植类库项目,该单元测试程序集与被测试库相同的框架子集......
如何为.NET可移植类库创建单元测试程序集?
(我对其他同样针对PCL的框架持开放态度,我目前还没有意识到MSTest之外的其他解决方案已将此考虑在内。)
答案 0 :(得分:4)
xUnit现在支持PCL单元测试; http://xunit.github.io/
答案 1 :(得分:2)
据我所知,目前还没有PCL库可以用于unitesting。
但我在github上发现这个项目看起来很有前途,并且完全针对你的需求:
https://github.com/jbtule/PclUnit
它遵循与Nunit相同的单元测试样式,但也从XUnit中借用了一些东西,所以应该很容易适应它。
答案 2 :(得分:1)
最近对这个问题进行了跟进,我试着为新的解决方案做好准备,我有一个Portable Class Library
我现在可以进行单元测试了。我不记得以前我曾尝试过什么,但这是我现在正在努力的事情:
Portable Class Library
....Shared
项目除了...Shared
文件之外,来自通用的App.xaml
项目是空的,所以到目前为止还没有真正使用它。
包含UI的所有项目都引用类型为Portable Class Library
的项目,并且它们都使用完全相同的代码。
单元测试项目还引用了Portable Class Library
中的代码,我按常规方式添加了引用(右键单击References
,Add reference
,然后从{{{{}}中选择PCL项目1}} - Solution
。
解决方案结构如下面的屏幕截图所示:
当我试图让整个PCL单元测试工作在去年工作时,我不能完全确定问题是什么,但现在它看起来应该可行。
如果需要,请随时提出更多信息,如果可能,我会尽力提供帮助。
答案 3 :(得分:0)
便携式测试库位于此处的Windows 8 SDK(对我来说):
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs\MSTestFramework\11.0\References\CommonConfiguration\neutral\Microsoft.VisualStudio.TestPlatform.UnitTestFramework.dll
你会看到它有一个Assert类和必要的[TestXXX]属性。如果我创建一个可移植库项目并添加对该程序集的引用,Visual Studio的Test Explorer将显示标有[TestMethod]属性的测试,但它不会执行它们。
答案 4 :(得分:0)
我有一个适用于Windows Store& Windows Phone包含一个带有ViewModel的PCL。我刚创建了一个单元测试项目,并将viewmodel添加为“链接文件”。它只是一个小测试,它检查hello world应用程序中的字符串,但它似乎工作。
只有时间才能证明此解决方案是否符合我未来的测试需求。