Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OneTimeSetUp仅为参数化测试夹具运行一次_C#_Unit Testing_Nunit_Nunit 3.0 - Fatal编程技术网

C# OneTimeSetUp仅为参数化测试夹具运行一次

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

我创建了一个测试夹具,该夹具使用一对字符串值进行参数化,并包括几个测试方法。参数被传递给测试类构造函数。我希望fixture的每个实例都使用一对特定的字符串参数创建,然后运行其中的所有测试。夹具中所有测试通用的初始化是在用
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