Xunit为每个新测试创建Test类的新实例(使用WebDriver和C#)

use*_*170 7 c# webdriver xunit.net selenium-webdriver

有没有办法在使用Xunit的Webdriver(Selenium)在同一浏览器中运行多个测试,目前xunit为每个新测试启动新浏览器,下面是示例代码

public class Class1

{
    private FirefoxDriver driver;
    public Class1()
    {
         driver = new FirefoxDriver();
    }

    [Fact]
    public void Test()
    {
        driver.Navigate().GoToUrl("http://google.com");
        driver.FindElementById("gbqfq").SendKeys("Testing");
    }

    [Fact]
    public void Test2()
    {
        driver.Navigate().GoToUrl("http://google.com");
        driver.FindElementById("gbqfq").SendKeys("Testing again");
    }

}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ann 5

虽然我不知道Selenium,但我知道xUnit.net为每个测试方法创建了一个测试类的新实例,这可能解释了为什么你会看到你报告的行为:每个driver字段都重新初始化测试方法,因为每次都会调用构造函数.

为了重用单个FirefoxDriver实例,您可以使用xUnit.net的IUseFixture<T>界面:

public class Class1 : IUseFixture<FirefoxDriver>
{
    private FirefoxDriver driver;

    public void SetFixture(FirefoxDriver data)
    {
        driver = data;
    }

    [Fact]
    public void Test()
    {
        driver.Navigate().GoToUrl("http://google.com");
        driver.FindElementById("gbqfq").SendKeys("Testing");
    }

    [Fact]
    public void Test2()
    {
        driver.Navigate().GoToUrl("http://google.com");
        driver.FindElementById("gbqfq").SendKeys("Testing again");
    }    
}
Run Code Online (Sandbox Code Playgroud)