C# 如何在NUnit 3.2中创建全局初始化?

C# 如何在NUnit 3.2中创建全局初始化?,c#,testing,selenium-webdriver,nunit,C#,Testing,Selenium Webdriver,Nunit,我正在尝试设计一套测试套件,以便在所有测试之前运行全局初始化。我们可以考虑在不同的类和命名空间中存在测试。在NUnit文档中,我只找到了一个名为OneTimeSetUp的属性,但它仅适用于同一命名空间中的测试 所以,我使用inherting进行设计。我所有的测试类都在一个基本测试类中,在这个测试类中,他的构造函数执行全局初始化(借助一个静态变量来检查它是否初始化),并且在析构函数中执行全局分解 使用它,我可以创建我的场景。但是当测试套件运行时,基本测试类会创建新对象,因为在不同的类和名称空间中存

我正在尝试设计一套测试套件,以便在所有测试之前运行全局初始化。我们可以考虑在不同的类和命名空间中存在测试。在NUnit文档中,我只找到了一个名为OneTimeSetUp的属性,但它仅适用于同一命名空间中的测试

所以,我使用inherting进行设计。我所有的测试类都在一个基本测试类中,在这个测试类中,他的构造函数执行全局初始化(借助一个静态变量来检查它是否初始化),并且在析构函数中执行全局分解

使用它,我可以创建我的场景。但是当测试套件运行时,基本测试类会创建新对象,因为在不同的类和名称空间中存在测试。它会导致系统中出现跳板,而下一个测试运行缓慢:第一个测试在50秒内运行,而另一个(执行相同操作但使用不同名称空间)在120秒内运行


有一种更好的方法可以在不影响测试性能的情况下创建全局初始化和全局拆卸

正确的说法是,
OneTimeSetUp
仅适用于同一命名空间中的测试,但作为 注:

任何命名空间之外的SetUpFixture提供整个程序集的设置和拆卸

因此,该类将如下所示:

using System;
using NUnit.Framework;

[SetUpFixture]
public class TestInitializerInNoNamespace 
{
    [OneTimeSetUp]
    public void Setup() { /* ... */ }

    [OneTimeTearDown]
    public void Teardown() { /* ... */ }
}

因此,在这种情况下,我应该使用<代码> StudioTebug <代码>,而不是<代码> TestCudio,当您在代码示例中编写时,是否正确?我将尝试这两种情况,如果其中的一些作品,我将考虑您的AWNSER。谢谢哎呀,对不起,它应该已经被设置好了。已编辑。我尝试将类结构更改为awnser时收到错误消息示例:
消息:OneTimeSetUp:SetUpAttribute不允许在SetUpFixture中使用
确定,我修复了错误。方法[SetUp]和[TearDown]对于其他类是必需的(我使用它们在日志中写入测试成功/失败)。此外,我从tests类中删除了[SetUpFixture]类的所有固有项,它就工作了。非常感谢。