c# - 如何从外部程序集运行测试

标签 c# .net inheritance testing mstest

这就是我想要实现的目标。我通过 nuget 提供一些代码,并且还想发布第二个 nuget,其中包含测试以验证服务是否正常工作/部署。该测试 nuget 将包含所有核心测试,无需任何修改(通过配置文件除外)。

这是程序集 A 的基类:

[TestClass]
public abstract class BaseTestClass
{
    [TestCleanup]
    public void TearDown()
    {
        // do some cleanup...
    }

    [TestMethod]
    public void BaseTest()
    {
        // base test code...
    }
}

现在,我想将此程序集 A 引用到另一个程序集 B 中,并执行如下操作:

[TestClass]
public class ChildTestClass : BaseTestClass
{ }

问题是,测试资源管理器看不到BaseTest方法。它只会看到在子类本身中声明的测试方法。无法正确发现基类中的任何测试方法。

我怎样才能做到这一点?

仅供引用:当我做同样的事情但都在同一个程序集/项目中时,它工作得很好。我正在使用 MSTest 和 ReSharper 测试运行程序。 MSTest 不显示任何内容,但 ReSharper 有时会显示基本测试但从不运行它,即使我能够选择并运行特定测试,它也始终只运行在子类中声明的测试。

最佳答案

讨厌传递坏消息,但简单地说你不能。

Visual Studio 不支持此功能。有一个 userVoice 项目有望在将来添加支持,但在那之前您无法以这种方式构建测试。

http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/6030736-support-test-inheritance-for-base-classes-in-diffe

仅供引用,MS 官方回复证实了这一点: https://connect.microsoft.com/VisualStudio/feedback/details/989781

关于c# - 如何从外部程序集运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28682630/

相关文章:

c# - 方法 'xxx' 不能是事件的方法,因为此类的派生类已经定义了该方法

.net - 为什么我不能在 VB.NET 中使用 "New"表达式作为语句?

c# - 带圆角的数据网格模板

c# - 添加复选框列表后提交表单不再有效(.net mvc razor)

javascript - 如何使用 Javascript 调用 xpath 使用 i 来增加 for 循环中的变量名称?

c# - 正则表达式仅在 URL 参数后跟以 "&"结尾的内容时才在 URL 参数中拆分 "="

c# - Linq to Entity 和加载 EntitySet

c#继承麻烦。我在继承链中看不到方法

c++ - 继承的模板化单例类 C++ 中的未定义构造函数

c# - 如何确定哪个 ValidationAttribute 返回了 ModelError