如何 运行 从外部程序集进行测试

How to run tests from an external assembly

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

所以这是 程序集 A 的基础 class:

[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 方法。它只会看到在子 class 本身中声明的测试方法。未正确发现基础 class 中的任何测试方法。

我该怎么做?

仅供参考:当我做同样的事情但都在同一个 Assembly/project 时,它工作正常。我同时使用 MSTest 和 ReSharper 测试 运行ner。 MSTest 不显示任何内容,但 ReSharper 有时会显示基本测试,但从不显示 运行 它,即使我能够 select 和 运行 一个特定的测试,它也总是 运行 仅在子 class.

中声明的测试

讨厌成为坏消息的传播者,但简单地说你不能。

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

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

FYI 官方 MS 回复确认: https://connect.microsoft.com/VisualStudio/feedback/details/989781