在Xuit(C#)中初始化Suite之前

本文关键字:初始化 Suite 之前 Xuit | 更新日期: 2023-09-27 17:57:29

更新的问题::

我想在使用xUnit.net运行测试套件中的任何测试之前设置数据。我尝试了IUseFixture,但它在运行任何测试类之前运行(而不是在测试套件之前)

假设您的套件有2个测试类,每个测试类有2个,当使用IUseFixture时,SetFixture会运行4次(每次测试一次)。

当所有四个测试同时运行时,我需要只运行一次的东西(每个测试套件运行一次),以下是示例(使用WebDriver/C#/xunit)::

第1类:

 public class Class1 : IUseFixture<BrowserFixture>
{
    private IWebDriver driver;
    public void SetFixture(BrowserFixture data)
    {
        driver = data.InitiateDriver();
        Console.WriteLine("SetFixture Called");
    }
    public Class1()
    {
        Console.WriteLine("Test Constructor is Called");
    }
    [Fact]
    public void Test()
    {
        driver.Navigate().GoToUrl("http://www.google.com");
        driver.FindElement(By.Id("gbqfq")).SendKeys("Testing");
    }
    [Fact]
    public void Test2()
    {
        driver.Navigate().GoToUrl("http://www.google.com");
        driver.FindElement(By.Id("gbqfq")).SendKeys("Testing again");
    }
}

第2类:

 public class Class2 : IUseFixture<BrowserFixture>
{
    private IWebDriver driver;
    public void SetFixture(BrowserFixture data)
    {
        driver = data.InitiateDriver();
        Console.WriteLine("SetFixture Called");
    }
    public Class2()
    {
        Console.WriteLine("Test Constructor is Called");
    }
    [Fact]
    public void Test3()
    {
        driver.Navigate().GoToUrl("http://www.google.com");
        driver.FindElement(By.Id("gbqfq")).SendKeys("Testing");
    }
    [Fact]
    public void Test4()
    {
        driver.Navigate().GoToUrl("http://www.google.com");
        driver.FindElement(By.Id("gbqfq")).SendKeys("Testing again");
    }
}

夹具类别:

 public  class BrowserFixture
{
    private  IWebDriver driver;
     public BrowserFixture()
     {
         driver = new FirefoxDriver();
     }
    public  IWebDriver InitiateDriver()
    {
        return driver;
    }
}

现在,当我同时运行Test、Test2、Test3、Test4时,SetFixture被调用了4次,我需要在任何测试运行之前只运行一次的东西(每个测试套件一次),或者我可以说在初始化TestSuite中的任何测试类之前只运行过一次的事情,比如TestNG::中的BeforeSuite

http://testng.org/javadoc/org/testng/annotations/BeforeSuite.htmlhttp://testng.org/doc/documentation-main.html#annotations

在Xuit(C#)中初始化Suite之前

夹具的ctor只运行一次:-

public class Facts : IUseFixture<MyFixture>
{
    void IUseFixture<MyFixture>.SetFixture( MyFixture dummy){}
    [Fact] void T(){}
    [Fact] void T2(){}
}
class MyFixture
{
    public MyFixture() 
    {
        // runs once
    }
}