c# - 是否可以为所有测试设置 [OneTimeSetup]?

标签 c# selenium nunit

我正在使用 NUnit 运行一些 Selenium 测试,我遇到了一个小问题,我想看看是否可以得到更正。发生的情况是 [OneTimeSetUp][OneTimeTearDown] 在每个 fixture 完成后运行。我想要的是在测试开始时运行一次 [OneTimeSetUp],并在所有固定装置完成后运行拆卸。

TestBaseClass.cs

public class TestBaseClass
{

    [OneTimeSetUp]
    public void Init()
    {
         // Login
    }

    [OneTimeTearDown]
    public void TearDown()
    {
        Driver.Close();
    }
}

导航测试

[TestFixture]
public class NavigationTests : TestBaseClass
{
    // Tests
}

MainPageTests

[TestFixture]
public class MainPageTests : TestBaseClass
{
    // Tests
}

最佳答案

OneTimeSetUpAttribute 有两个用途。

首先,它标记测试夹具中的一个方法,该方法在该夹具中的任何其他测试之前运行一次。这就是您通过从基类继承来使用它的方式。由于继承,OneTimeSetUp 出现在您的每个 派生灯具中,但它仍然运行多次,每个灯具一次。

第二个用途是在 SetUpFixture 中。如果您在特定命名空间中创建 SetUpFixture,它的 OneTimeSetUp 方法将在该命名空间中的任何其他测试之前运行一次。如果您在任何命名空间之外创建 SetUpFixture,那么它的 OneTimeSetUp 将在程序集中的任何测试之前运行一次

更新:有人建议最后一句应该说“在包含 TestFixture 的任何 namespace 之外”。那实际上是不正确的。 SetUpFixture 必须在任何命名空间之外才能在程序集级别运行。如果有一个顶级命名空间,其中包含所有 测试代码,那么您也可以在那里放置一个 SetUpFixture,效果大致相同。但是,如果它位于没有测试的命名空间中,那么它永远不会运行。

有关 SetUpFixture 的更多信息,请参阅 docs .

关于c# - 是否可以为所有测试设置 [OneTimeSetup]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42213167/

相关文章:

c# - 使用扩展方法调用 WCF 服务

javascript - 如何使用 python 截取给定 url 的屏幕截图

visual-studio-2013 - NUnit 在 TFS 构建中加载失败

c# - 从特殊文件夹 C# 检索所有文件的方法

c# - 如何在WPF中捏

java - 在测试执行时,如何等待网页上有时出现在随机位置的 WebElement?

java - 如何防止运行 RHEL6 的虚拟机中黑屏?

unit-testing - C# 中的模拟和存储库/服务层

c# - 使用 Moq 在 NUnit 中模拟 HttpContext.GetGlobalResourceObject

c# - 如何将 Foreach 语句转换为 linq 表达式?