我正在使用NUnit3.0测试框架使用C#处理Selenium我创建了一个OneTimeTearDown
类,其中包含OneTimeTearDown
和OneTimeTearDown
。
我在所有测试类中都使用此类作为父类,并且遇到了{{1}}方法的问题。 {{1}}方法在我的第一个测试类中执行所有测试方法后执行,并且不执行同一命名空间中其他测试类的测试方法。
请建议如何解决此问题的解决方案。
答案 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类名添加前缀来调用它们的方法