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

Tra*_*lig 29 .net mstest portable-class-library

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

根据Visual Studio ALM + Team Foundation Server博客,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)引用了不同的 MSTest程序集C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs\MSTestFramework\11.0\References\CommonConfiguration\neutral\Microsoft.VisualStudio.TestPlatform.UnitTestFramework.dll.此项目类型创建一个小的无UI Windows应用程序应用程序...完成清单和所有内容.它也不允许我指定我所针对的框架 - 它似乎仅适用于Windows应用商店应用.

潜在的错误假设下,我应该使用单元测试程序集测试我的可移植类库项目,该单元测试程序集的目标是与被测试库相同的框架子集...

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

(我对其他同样针对PCL的框架持开放态度,我目前还没有意识到MSTest之外的其他解决方案已经考虑到了这一点.)

小智 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
Run Code Online (Sandbox Code Playgroud)

您将看到它有一个 Assert 类和必要的 [TestXXX] 属性。如果我创建一个可移植库项目并添加对该程序集的引用,Visual Studio 的测试资源管理器将显示标有 [TestMethod] 属性的测试,但不会执行它们。