在MSTest中忽略来自泛型基类的继承测试类

Ste*_*ris 17 c# unit-testing mstest visual-studio resharper-5.1

在MSTest中创建通用基本测试类并从中继承时,我无法运行所有继承类的测试.

单元测试结果

BaseDependencyPropertyFactoryTest位于Whathecode.PresentationFramework.Tests程序集中.它是通用基类.(BaseDependencyPropertyFactoryTest <TTestClass>)

两个程序集都有一个继承自此基类的测试,名为DependencyPropertyFactoryTest.所有继承的类都传递一个特定的类型参数.

[TestClass]
public class DependencyPropertyFactoryTest
    : BaseDependencyPropertyFactoryTest<ASpecificClass>
{
}
Run Code Online (Sandbox Code Playgroud)

似乎只运行与基类位于同一程序集中的继承测试.Whathecode.PresentationFramework.Aspects.Tests程序集中的继承测试似乎完全被忽略.

我究竟做错了什么?如果需要,我可以上传所有必需的源代码,但是你需要PostSharp才能进行方面组装.


作为测试,我尝试将一个测试添加到方面程序集中的继承测试类,该程序集调用基本测试类中的所有测试.

[TestMethod]
public void AllBaseTests()
{
    ClrGetterSetterTest();
    DependencyPropertyGetterSetterTest();
}
Run Code Online (Sandbox Code Playgroud)

这给出了以下结果.奇怪的是,这个测试被执行了!目前,这可能是一种至少运行它们的方法,但当然我每次在基类中添加额外的测试时都不想编辑这个测试.

编辑后的单元测试结果

为什么跳过这些基础测试,为什么指示'已中止'?

Ste*_*ris 13

其原因与泛型有关,但测试在不同的程序集中.

Microsoft Connect建议描述了问题:"Visual Studio测试(MSTest)和缺少对驻留在不同程序集中的基类的继承支持." 它被标记为"已修复",但似乎尚未在Visual Studio 2010中修复,可能仍需要发布?

这个问题有一个有趣的解决方法:

您可以通过将包含基类的源文件编译到希望从该基类派生的所有测试项目中来解决此问题.将项目添加为"链接",这样您就不会得到基类的源文件的多个副本.

这对我有用,我觉得这个解决办法太难看了.

  • VS 2015 Update 1 - 仍然破碎 (4认同)
  • VS 2013似乎仍然被打破.提起新的错误https://connect.microsoft.com/VisualStudio/feedback/details/989781 (2认同)