C# OneTimeSetUp仅为参数化测试夹具运行一次
我创建了一个测试夹具,该夹具使用一对字符串值进行参数化,并包括几个测试方法。参数被传递给测试类构造函数。我希望fixture的每个实例都使用一对特定的字符串参数创建,然后运行其中的所有测试。夹具中所有测试通用的初始化是在用C# OneTimeSetUp仅为参数化测试夹具运行一次,c#,unit-testing,nunit,nunit-3.0,C#,Unit Testing,Nunit,Nunit 3.0,我创建了一个测试夹具,该夹具使用一对字符串值进行参数化,并包括几个测试方法。参数被传递给测试类构造函数。我希望fixture的每个实例都使用一对特定的字符串参数创建,然后运行其中的所有测试。夹具中所有测试通用的初始化是在用OneTimeSetUp修饰的方法中完成的,最终确定是在onetimeeardown中完成的: [TestFixtureSource(typeof(MyFixtureData), "FixtureParameters")] public class MyModuleTests
OneTimeSetUp
修饰的方法中完成的,最终确定是在onetimeeardown
中完成的:
[TestFixtureSource(typeof(MyFixtureData), "FixtureParameters")]
public class MyModuleTests
{
private string parameter1;
private string parameter2;
public MyModuleTests(string parameter1, string parameter2)
{
this.parameter1 = parameter1;
this.paramter2 = paramter2;
}
[OneTimeSetUp]
public void InitializeFixture()
{
// perform initialization steps: create test objects, run browser, open test page, check that required objects exist on page etc.
}
[OneTimeTearDown]
public void FinalizeFixture()
{
// perform finalization steps: close browser etc.
}
[Test]
public void MyModuleTest1()
{
// assert something
}
[Test]
public void MyModuleTest2()
{
// assert something
}
[Test]
public void MyModuleTest3()
{
// assert something
}
public class MyFixtureData
{
public static IEnumerable FixtureParameters
{
get
{
yield return new TestFixtureData("string value1a", "string value1b");
yield return new TestFixtureData("string value2a", "string value2b");
yield return new TestFixtureData("string value3a", "string value3b");
}
}
}
问题是OneTimeSetUp
和onetimeeardown
方法只运行一次,但是我希望它们对每个fixture实例都运行(在我的例子中是三个实例)
我遗漏了什么吗?您是如何运行测试的?我想知道您是否正在使用某种绕过NUnit代码并阻止其创建多个实例的运行程序。如果任何NUnit提供的运行程序没有为返回的每个TestFixtureSource创建实例,请报告一个错误。Charlie,我做了一些研究并找到了原因-原因是
Close()
在onetimeeardown
节中对WebDriver实例调用的方法,该方法在测试资源管理器中处理实例和后续装置中的测试(它们实际上是创建的)立即失败。我注释了Close()
方法和所有装置都工作了。然而,现在我正在努力解决在所有装置完成后关闭浏览器的问题。但我仍然不明白为什么即使在关闭WebDriver实例后,新装置实例的OneTimeSetUp
也不能从头创建所有内容?错误消息为:消息:OneTimeSetUp:OpenQA.Selenium.WebDriverException:意外错误。System.Net.WebException:无法连接到远程服务器-->System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它[::1]:52911