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
Selenium C#/NUnit 3.12.0没有并行运行测试_C#_Unit Testing_Parallel Processing_Nunit - Fatal编程技术网

Selenium C#/NUnit 3.12.0没有并行运行测试

Selenium C#/NUnit 3.12.0没有并行运行测试,c#,unit-testing,parallel-processing,nunit,C#,Unit Testing,Parallel Processing,Nunit,我正在Visual Studio Enterprise 2019版本16.3.9/测试浏览器窗口中执行测试。我的体系结构是Intel(R)Core(TM)i7-7600 CPU@2.80Ghz(4个CPU),~2.9Ghz 下面是我的伪Selenium C#代码: [TestFixture] internal class TestClass{ [OneTimeSetUp] public void OneTimeSetUp() { initializeExt

我正在Visual Studio Enterprise 2019版本16.3.9/测试浏览器窗口中执行测试。我的体系结构是Intel(R)Core(TM)i7-7600 CPU@2.80Ghz(4个CPU),~2.9Ghz
下面是我的伪Selenium C#代码:

[TestFixture]
internal class TestClass{

    [OneTimeSetUp]
    public void OneTimeSetUp()
    {
       initializeExtentReport()
    }

    [SetUp]
    public void Setup()
    {
       initializeChromebBrowser();
    }

    [Test]
    public void NavigatoToGmail()
    {
        bool isGmailAccessible = GoToUrl("https://www.google.com/");
        Assert.True(isGmailAccessible);
    }

    [Test]
    public void NavigatoToMicrosoft()
    {
        bool isMicrosoftAccessible = GoToUrl("https://www.microsoft.com/");
        Assert.True(isMicrosoftAccessible);
    }


    [Test]
    public void NavigatoToYahoo()
    {
        bool isYahooAccessible = GoToUrl("https://www.yahoo.com/");
        Assert.True(isYahooAccessible);
    }

    [TearDown]
    public void TearDOwn()
    {
        CloseBrowser();
    }

    [OneTimeTearDown]
    public void OneTimeTearDown()
    {
        FinishExtentReport();
    }
这就是我已经尝试过的,但没有成功

  • [Parallelizable(ParallelScope.Children)]
    添加到类中,并将
    [Parallelizable(ParallelScope.Self)]
    属性添加到每个测试方法中。结果-3个浏览器实例打开,没有其他操作。没有URL导航,什么都没有

  • [Parallelizable(ParallelScope.All)]
    添加到类中,并将
    [Parallelizable(ParallelScope.Self)]
    添加到每个测试方法中。结果-打开3个浏览器实例。只执行最后一个测试(NavigationToYahoo)并提供结果。前2个-没有其他操作发生,浏览器窗口没有关闭,这意味着没有执行TearDown()方法

  • 只需在每个测试方法中添加
    [Parallelizable(ParallelScope.Self)]
    。结果-3个浏览器实例打开,没有其他操作。没有URL导航,什么都没有

  • [Parallelizable(ParallelScope.Self)]
    添加到类中,并将
    [Parallelizable(ParallelScope.Self)]
    属性添加到每个测试方法中。结果-打开3个浏览器实例。第二个测试(NavigateToMicrosoft)被执行,其余的2个-没有其他操作,没有URL导航,什么都没有

  • [Parallelizable(ParallelScope.Self)]
    添加到类中,并将
    [Parallelizable(ParallelScope.All)]
    属性添加到每个测试方法中。结果-获取错误消息
    可能没有指定ParallelScope。使用非参数化测试方法的孩子们真的不知道为什么

  • 我已经阅读了这里的文档,但我觉得没有实际的方法使用NUnit框架并行执行单元测试


    我只想独立地并行运行这3个测试(在我的实际场景中,大约有100个测试)

    如果单元测试在同一个类中,它们将不会并行运行。如果你有3个独立的测试类,它应该可以工作。

    @Neil的答案是错误的。NUnit将根据您指定的方式在程序集中并行运行测试。然而,这里处理的是两个软件,每个都有自己的并行方式。我可以回答WRT NUnit,这样至少你不会浪费时间玩不必要的属性

  • [Parallelizable]
    与“[Parallelizable(ParallelScope.Self)]相同。依我看,最好的风格是不使用属性,但两者是相等的

  • [ParallelScope.All]
    [ParallelScope.Self | ParallelScope.Children]
    的缩写

  • 因此,您只需要担心两种设置:自我(隐式或显式)和孩子

  • 在类上放置
    子类
    与在每个测试用例上放置
    Self
    是相同的。在这两种情况下,测试可以彼此并行运行

  • 当放置在fixture类上时,
    Self
    表示该fixture可以与在其上也有
    Self
    的其他fixture并行运行。如果该夹具中的测试也是可并行的,那么它们将与所有并行夹具中的所有测试并行运行

  • 如果您只是运行NUnit,即不使用Selenium,那么您只需在每个测试上放置
    [Parallelizable]
    ,或者在夹具上放置“[Parallelizable(ParallelScope.Children)]”——任何一个都做相同的事情

  • 如果你有多个赛程,而你不想让它们并行运行,那么就没有更多的事情要做了。如果您确实希望它们和它们的所有测试并行运行,那么将
    [Parallelizable]
    也放在夹具上,或者将
    [Parallelizabel(ParallelScope.all)]
    放在夹具上,而不放在测试用例上

  • 许多人似乎忽略了一件重要的事情:
    [Parallelizable]
    使您的测试并行运行。它不能使它们并行运行。你必须这么做。该属性告诉NUnit您已确保测试可以并行运行,因此它以这种方式运行

  • 对努尼特来说就是这样。现在,如果你在混合物中添加硒,这取决于你如何使用它。如果Selenium正在为您启动流程,那么您在NUnit中所做的事情不会产生任何影响。您需要了解Selenium并行化如何与NUnit的交互。我只告诉过你NUnit是干什么的

    观察。。。除非您只有很少的测试用例,或者它们单独需要很长时间,否则并行运行fixture并让测试在fixture中顺序运行可能会获得同样好或更好的性能


    更新-在你的后续评论中,你说你只有一个装置。我的回答涉及一个更复杂的假设。对于一个fixture,如果希望所有测试并行运行,请在fixture上使用ParallelScope.Children。如果一个或两个测试不能并行工作,那么将它们标记为不可并行。

    真的吗?文档中没有说我不能并行运行测试。如果我不能并行运行我的测试,这是一个糟糕的设计。这不是NUnit,而是整个VisualStudio测试框架。在许多方面,这是一个很好的设计选择,因为通常在同一测试类中测试同一对象。我相信如果你把你的测试分为不同的类,你的方案会成功的。谢谢。我只有一个[TestFixture](类)和100多个[Test]方法。也许这是个糟糕的设计,我不知道。所以你的答案是——不是并行运行测试,只是标记方法,让它们可以以这种方式运行。我不确定你是从哪里得出这个结论的。NUnit将在中运行您的测试