在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
夹具的ctor只运行一次:-
public class Facts : IUseFixture<MyFixture>
{
void IUseFixture<MyFixture>.SetFixture( MyFixture dummy){}
[Fact] void T(){}
[Fact] void T2(){}
}
class MyFixture
{
public MyFixture()
{
// runs once
}
}