Microsoft.VisualStudio.TestPlatform.TestFramework和Microsoft.VisualStudio.QualityTools.UnitTestFramework之间的区别

39
今天我注意到我们在VS 2015中的一个解决方案发生了变化。似乎该解决方案生成的测试项目使用的命名空间与同一解决方案中现有的测试项目不同。
只有引用“Microsoft.VisualStudio.QualityTools.UnitTestFramework”的测试项目才能在Visual Studio 2015中识别为测试项目。
然而,现在有一些测试项目正在引用“Microsoft.VisualStudio.TestPlatform.TestFramework”和“Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions”。这些测试项目可能是从VS 2017 RC生成的,这可以解释不同的命名空间。我没有找到任何有关向后兼容性的文档。
问题是,应该使用哪个命名空间?因为无法同时使用两个命名空间。这两个命名空间之间有什么区别?
Visual Studio 2015能够使用任一引用生成测试项目。只因测试项目生成而将较新的命名空间切换回旧的命名空间是不足够的原因。

1
谢谢,我刚刚意识到单元测试生成器是来自ReSharper的。它看起来与intelliTest测试生成器相同,后者仅在VS Enterprise中可用。因此,如果可能的话,似乎我必须配置resharper以某种方式使用mstest 2.0。非常感谢提示。 - SwissCoder
1个回答

23

我现在非常困惑...这篇文章列出了另一个命名空间集,而不是问题中的那些:Microsoft.VisualStudio.TestTools.UnitTestingMicrosoft.VisualStudio.TestPlatform.UnitTestFramework显然是旧的,而根据您的答案,它们应该是新的并且指的是MSTest 2.0。链接的发布公告指出MSTest 2.0的命名空间应该是Microsoft.VisualStudio.TestTools.UnitTesting。或者我有什么误解吗? - O. R. Mapper
使用NuGets。坚持使用它们。最简单的方法是删除所有引用并添加NuGet。它会添加正确的程序集,智能感知会告诉你要使用什么。 - jessehouwing
1
如果你想理解自己在做什么,或者需要让现有的代码按照原样运行而不进行更改,那么这种策略并没有帮助。 - O. R. Mapper
被引用的程序集是Visual Studio(2015年之前版本)的一部分,它们已经发生了变化... 通过保留旧版本的Visual Studio并明确引用旧的程序集,代码将会构建成功,但在Visual Studio 2015及以上版本中可能无法被Visual Studio测试运行器检测到。 - jessehouwing
哎呀,这不利于在具有异构软件环境的团队中共享代码。 - O. R. Mapper
1
没错,你可以继续使用VS2013。但是那已经是7年前的版本了,很多东西都发生了变化。无限的向后兼容会阻碍很多进展。这些更改是微不足道的,一旦完成,很可能会加快你的测试周期。 - jessehouwing

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