C# 子类中参数化TestFixture的NUnit配置和继承

C# 子类中参数化TestFixture的NUnit配置和继承,c#,selenium,nunit,automated-tests,C#,Selenium,Nunit,Automated Tests,我正在建造一个硒套房。我试图找出如何最好地为所有浏览器和所有客户机运行测试夹具。以下是我试图做的,由于“没有合适的构造函数”,这不起作用 下面是我的基类,它提供了一个浏览器和方法来创建子类的webdriver [TestFixture(Browser.Chrome)] [TestFixture(Browser.Firefox)] [TestFixture(Browser.IE)] [TestFixture(Browser.Safari)] abstract class WebDriverTest

我正在建造一个硒套房。我试图找出如何最好地为所有浏览器和所有客户机运行测试夹具。以下是我试图做的,由于“没有合适的构造函数”,这不起作用

下面是我的基类,它提供了一个浏览器和方法来创建子类的webdriver

[TestFixture(Browser.Chrome)]
[TestFixture(Browser.Firefox)]
[TestFixture(Browser.IE)]
[TestFixture(Browser.Safari)]
abstract class WebDriverTest
{
    protected IWebDriver driver;
    protected Browser browser;

    public WebDriverTest(Browser browser)
    {
        this.browser = browser;
    }

    protected IWebDriver CreateWebDriver()
    {
        CreateWebDriver(browser);
    }
}
以及所有客户机的测试夹具。对于属于某些客户机集的特性,我会有其他类似的测试类

[TestFixture(Client.Client1)]
[TestFixture(Client.Client2)]
abstract class AllClientsTest : WebDriverTest
{
    protected Client client;

    public AllClientsTest(Browser browser, Client client) : base(browser)
    {
        this.client = client;
    }

    protected Navigator GetNavigator()
    {
        return NewNavigator(client)
    }
}
最后是一个类,在这个类中,我将使用为所有客户端运行的webdriver编写一个测试

class InheritanceTest : AllClientsTest
{
    public InheritanceTest(Browser browser, Client client) : base(browser, client)
    {
    }

    [Test]
    public void Print()
    {
        Console.WriteLine(browser + ":" + client);
    }
}
这样的事情可能吗?我试图让配置独立于TestRunner,而不是重复自己在测试用例中的大量参数(可以由数据驱动初始化)。我还尝试在
AllClientsTest
类中添加一个属性,如
[TestFixture(typeof(Browser)、typeof(Client))]


如果有一种数据驱动的方法来设置
[TestFixture]
属性,我可以在基类中加载两组配置,然后在基类中加载配置,并消除对超类的需要,超类基本上只用于方便地运行一系列测试。

您看过NUnit的SetUpFixture功能了吗?我做了一件和你想做的有点相似的事


我写了,但这是一个不同的任务。这可能会有帮助。

AllClientsTest
在它的构造函数中需要两个参数,
Browser
Client
,您只给它一个
Client
。您没有将任何内容传递到
InheritanceTest
。然而,我想说的是,测试本身应该对运行哪个浏览器负责
InheritanceTest
客户端
浏览器
一直传递到
WebDriverTest
。我希望运行测试的TestFixture在SetUp/TestFixtureSetUp方法中准备好浏览器和客户端(取决于特定测试夹具需要新WebDriver/Navigator的位置)。如果我在测试方法中通过了这些测试,我就不能利用测试之间的公共设置代码。