我正在使用 NUnit3.0 测试框架使用 C# 开发 Selenium 我创建了一个BaseSetup
具有OneTimeSetup
和OneTimeTearDown
.
我在所有测试类中都使用这个类作为父类,并且遇到了该OneTimeTearDown
方法的问题。该OneTimeTearDown
方法在我的第一个测试类中的所有测试方法执行后执行,并且不执行同一命名空间中其他测试类的测试方法。
请提出一个解决方案来解决这个问题。
我正在使用 NUnit3.0 测试框架使用 C# 开发 Selenium 我创建了一个BaseSetup
具有OneTimeSetup
和OneTimeTearDown
.
我在所有测试类中都使用这个类作为父类,并且遇到了该OneTimeTearDown
方法的问题。该OneTimeTearDown
方法在我的第一个测试类中的所有测试方法执行后执行,并且不执行同一命名空间中其他测试类的测试方法。
请提出一个解决方案来解决这个问题。
还在https://groups.google.com/forum/#!topic/nunit-discuss/BHlItmdYwB4询问和回答
简短的回答:TestFixtures 不应该从 SetUpFixtures 继承。
谢谢查理,我从您在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 类名前加上前缀来调用它们