【问题标题】:Running Tests in different Assemblies在不同的程序集中运行测试
【发布时间】:2015-07-14 11:03:02
【问题描述】:

当我尝试运行测试时,VS 显示消息:“没有找到要运行的测试。”

这是我的代码:

public abstract class MyBaseClassTests
{
    protected IRepository Repository;

    [TestMethod]
    public void Test1 ()
    {
        var x = this.Repository.Get("id");
        Assert.AreEqual(x.Id, "id");

    }
}

[TestClass]
public class Implementation1Tests : MyBaseClassTests
{
    [TestInitialize]
    public void Setup()
    {
        this.Repository= new MemoryRepository();
    }
}    

[TestClass]
public class Implementation2Tests : MyBaseClassTests
{
    [TestInitialize]
    public void Setup()
    {
        this.Repository= new SqlRepository("connectionString...");
    }
}

所有实现都在不同的测试项目中。 (不同的组件)

有什么建议吗?还是 VS 的限制?

【问题讨论】:

    标签: c# .net unit-testing testing xunit


    【解决方案1】:

    显然,这是 MSTest 的 Visual Studio 测试运行程序中的一个限制。问题是测试类与基本夹具位于不同的程序集中。

    只要基础测试夹具位于同一个程序集中,我的测试就会显示出来。

    编辑:不,NUnit 没有解决它。我错了。

    我能提供的唯一解决方案是不继承测试。您可以拥有测试助手,但必须为每个夹具输入每个测试本身。

    edit2:This stack overflow duplicate 建议您可以将基类文件链接到解决该问题的每个依赖测试程序集。

    【讨论】:

    • 如果 MyBaseClassTests 类在同一个程序集中它可以工作......但我想为不同的实现重用相同的测试。
    • 正如其他堆栈溢出答案所建议的那样:在项目中选择“添加现有项目”并选择“链接”而不是打开。这样你可以使用该文件,但它会被编译到每个程序集中而不是被引用(这不起作用)。
    • 谢谢,真的有效!这是一个迷人的解决方案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    相关资源
    最近更新 更多