在Visual Studio Test Runner中从外部测试套件程序集运行NUnit测试

时间:2016-11-25 23:17:39

标签: c# visual-studio nunit nunit-3.0

我最近的模块化结构项目包括主程序集(我们将其命名为app)和多个data-provider。每个提供程序都位于单独的存储库中,并实现一些基本接口,例如IDataProvider。任何人都可以实现自己的提供者我已经编写了一个测试套件(NUnit 3.5),用于驻留在app存储库中的主要功能。它应该与每个data-provider一起运行。此测试套件可确保正确的提供程序实现。

因此,我需要从特定的data-provider运行外部测试程序集。当然还有环境变量,运行器参数等,但我不知道如何使用Visual Studio Test Runner显示并从UI执行这些测试。

Git SubmodulesGit Subtrees可以帮助维护与单独的app存储库中的主data-provider存储库的链接。然而,这种方法还有一些额外的注意事项。

很明显,我不是第一个面对这种问题的人。请分享您的经验。

修改

我会试着澄清这个问题。以下是位于“main-app”存储库中的“app”的代码。

// repository "main-app"
namespace MainApp
{
    public interface IDataProvider
    {
        string Concat(params string[] arg);
    }
}
namespace MainApp.Tests
{
    [TestFixture]
    public class SampleTests
    {
        [Test]
        public void GetDataTest(IDataProvider provider)
        {
            Assert.AreEqual("ab", provider.Concat("a", "b"));
        }
    }
}

这是提供者实现(驻留在单独的存储库中)

// repository "simple-provider"
namespace MainApp.SimpleProvider
{
    public class SimpleProvider : IDataProvider
    {
        public string Concat(params string[] arg)
        {
            return string.Concat(arg);
        }
    }
}

SimpleProvider项目包含对已编译的MainApp.dllMainApp.Tests.dll的引用。我需要使用Visual Studio Test Runner从SimpleProvider项目中的MainApp.Tests.dll运行测试。

1 个答案:

答案 0 :(得分:0)

我建议创建一个TestInfrastructure dll,可以将其发送给创建其数据提供者的用户。然后,用户可以创建一个继承自基类的测试类来运行常见测试。

namespace MainApp.SimpleProvider.Tests
{
    [TestFixture]
    public class SimpleProviderTests : DataProviderTests
    {
        // Add here specific tests if you want.
    }
}

如果要通过强制转换为某种类型来运行测试,则可以使用泛型。或者,您可以创建一个抽象方法,该方法将返回数据提供者的实例,并让提供者的创建者处理实例化。