如何为.NET可移植类库创建单元测试程序集?

时间:2012-10-01 16:57:06

标签: .net mstest portable-class-library

我正在尝试对我创建的可移植类库进行单元测试,并且我想确保它使用与其目标相同的框架子集进行测试。

Per the Visual Studio ALM + Team Foundation Server blog,MSTest单元测试框架在Visual Studio 2012 RC中转换为PCL;但是,我无法创建可移植的类库,然后在VS2012 RTM中引用MSTest框架。

  • 在“参考”对话框中浏览显示,没有任何单元测试组件被注册为与PCL兼容。
  • 将项目文件中的手动GAC参考添加到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之外的其他解决方案已将此考虑在内。)

5 个答案:

答案 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我现在可以进行单元测试了。我不记得以前我曾尝试过什么,但这是我现在正在努力的事情:

  • Visual Studio Premium 2013 Update 4
  • Portable Class Library
  • 类型的一个项目
  • 一个Windows窗体项目
  • 一个通用应用程序,包含一个Windows,一个Windows Phone和一个....Shared项目
  • 一个单元测试项目

除了...Shared文件之外,来自通用的App.xaml项目是空的,所以到目前为止还没有真正使用它。

包含UI的所有项目都引用类型为Portable Class Library的项目,并且它们都使用完全相同的代码。

单元测试项目还引用了Portable Class Library中的代码,我按常规方式添加了引用(右键单击ReferencesAdd reference,然后从{{{{}}中选择PCL项目1}} - Solution

解决方案结构如下面的屏幕截图所示:

enter image description here

当我试图让整个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应用程序中的字符串,但它似乎工作。

只有时间才能证明此解决方案是否符合我未来的测试需求。