NUnit3.0:OneTimeTearDown方法在执行第一个测试类后被调用,并且没有进入同一命名空间中的其他测试类

时间:2016-02-15 05:23:56

标签: c# selenium-webdriver nunit nunit-3.0

我正在使用NUnit3.0测试框架使用C#处理Selenium我创建了一个OneTimeTearDown类,其中包含OneTimeTearDownOneTimeTearDown

我在所有测试类中都使用此类作为父类,并且遇到了{{1}}方法的问题。 {{1}}方法在我的第一个测试类中执行所有测试方法后执行,并且不执行同一命名空间中其他测试类的测试方法。

请建议如何解决此问题的解决方案。

2 个答案:

答案 0 :(得分:1)

也在https://groups.google.com/forum/#!topic/nunit-discuss/BHlItmdYwB4

询问并回答

简短回答:TestFixtures不应该继承自SetUpFixtures。

答案 1 :(得分:1)

谢谢查理,我从你在https://groups.google.com/forum/#!topic/nunit-discuss/BHlItmdYwB4链接

中发表的评论中得到了重点

为了进一步参考读者,我在这里发布了我为克服这个问题所做的工作。

我打算做什么:我创建了一个SetUpFixture类,并在包含TestFixture的所有测试类中初始化了我想要使用的驱动程序和其他组件。我实现它的方法是在我的所有测试类中继承SetUpFixture类以使用相同的驱动程序和其他组件,这样我每次添加新的测试类时都不需要创建和初始化它

问题:当SetUpFixture类的OneTimeTearDown在完成任何一个测试类的测试执行后开始执行但是OneTimeSetup没有再次初始化组件并且控制传递给第二个测试类时出现问题(它也继承了SetUpFixture类)来执行其中的测试方法但是由于OneTimeTearDown已经处理了测试清理,因此没有驱动程序的实例来运行第二个测试类的测试方法,并且所有测试用例都开始失败。

解决方案:为了克服这种情况我做了什么      1.我将SetUpFixture类作为一个单独的类,并没有继承任何其他测试类      2.要在SetupFixture中重用驱动程序和其他已初始化的组件,我选择另一种方法。我在每个测试类中创建了一个本地驱动程序,并使用在SetUpFixure类中创建的驱动程序对其进行了初始化。      3.我的SetUpFixture类中有一些封装的方法,所以重用那些我开始通过为SetUpFixture类名添加前缀来调用它们的方法