29

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

根据 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)类型在. 这种项目类型创建了一个小型的无 UI Windows 应用商店应用程序......完整的清单和一切。它也不允许我指定我所针对的框架 - 它似乎仅适用于 Windows Store 应用程序。C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs\MSTestFramework\11.0\References\CommonConfiguration\neutral\Microsoft.VisualStudio.TestPlatform.UnitTestFramework.dll

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

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

(我对也针对 PCL 的其他框架持开放态度,我只是目前不知道除 MSTest 之外的其他解决方案已考虑到这一点。)

4

5 回答 5

4

xUnit 现在支持 PCL 单元测试;http://xunit.github.io/

于 2014-11-19T13:16:31.813 回答
2

据我所知,目前没有用于联合的 PCL 库。

但我在 github 上发现了这个项目,它看起来很有希望,并且正是你需要的目标:

https://github.com/jbtule/PclUnit

它遵循与 Nunit 相同的单元测试风格,但也从 XUnit 中借用了一些东西,所以它应该很容易适应它。

于 2013-12-27T17:53:42.573 回答
1

最近跟进这个问题,我试图为一个新的解决方案设置东西,我Portable Class Library现在有一个可以单元测试的东西。我不记得我之前究竟尝试过什么,但这是我现在正在做的事情:

  • Visual Studio 高级版 2013 更新 4
  • 一个项目类型Portable Class Library
  • 一个 Windows 窗体项目
  • 一个通用应用程序,由一个 Windows、一个 Windows Phone 和一个....Shared项目组成
  • 一个单元测试项目

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

所有包含 UI 的项目都引用 type 的项目Portable Class Library,并且它们都使用相同的代码工作。

Unit Test项目也引用Portable Class Library了.ReferencesAdd referenceSolutionProjects

解决方案结构如下图所示:

在此处输入图像描述

去年我试图让整个 PCL 单元测试工作正常时,我并不完全确定问题出在哪里,但现在它似乎可以正常工作。

如果需要,请随时询问更多信息,如果可能,我会尽力提供帮助。

于 2015-08-03T19:28:14.803 回答
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] 属性。如果我创建一个 Portable Library 项目并添加对该程序集的引用,Visual Studio 的测试资源管理器将显示标有 [TestMethod] 属性的测试,但它不会执行它们。

于 2012-10-05T17:39:31.903 回答
0

我有一个适用于 Windows Store 和 Windows Phone 的通用应用程序,其中包含一个带有我的 ViewModel 的 PCL。我刚刚创建了一个单元测试项目并将视图模型添加为“链接文件”。这只是一个小测试,用于检查 hello world 应用程序中的字符串,但它似乎有效。

只有时间会证明这个解决方案是否满足我未来的测试需求。

于 2014-12-06T22:52:01.730 回答