C# 子类中参数化TestFixture的NUnit配置和继承
我正在建造一个硒套房。我试图找出如何最好地为所有浏览器和所有客户机运行测试夹具。以下是我试图做的,由于“没有合适的构造函数”,这不起作用 下面是我的基类,它提供了一个浏览器和方法来创建子类的webdriverC# 子类中参数化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
[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的位置)。如果我在测试方法中通过了这些测试,我就不能利用测试之间的公共设置代码。