NUnit 测试:由于 SetUp 属性,无法正确实例化测试套件

本文关键字:测试 实例化 套件 由于 SetUp 属性 NUnit | 更新日期: 2023-09-27 18:32:51

早上好,

作为上下文,我正在使用nUnit 3.0.1(使用Selenium)在自动化测试套件中工作。测试直接从Visual Studio 2013的测试资源管理器运行。

我的问题是:在开始运行测试套件时,我试图使一些设置功能自动进行。对于所有测试套件,这些操作只需要执行一次,因此我不希望为每个测试类使用 [SetUp] 属性。

但是,当我运行测试时,我的设置甚至没有被触及:(。调试确认未完成设置。

到目前为止,我已经尝试使用:[SetUpFixture]以及[OneTimeSetUp]或[SetUp](在许多组合中),也尝试删除命名空间。我仍然没有得到我需要的东西。

我是 nUnit 的新手,所以我想得到一些关于可能出错的指导,或者一些确保运行脚本设置的替代方案。

NUnit 测试:由于 SetUp 属性,无法正确实例化测试套件

我希望你遵循这个模式:

在下面的MySetupClass中,它定义了测试套件设置和拆卸方法,这些方法仅在测试运行的开始和结束时执行一次。请参阅设置夹具文档。

我的设置类.cs

namespace NUnit.Tests
{
  using System;
  using NUnit.Framework;
  [SetUpFixture]
  public class MySetUpClass
  {
    [OneTimeSetUp]
    public void RunBeforeAnyTests()
    {
      Console.WriteLine("SetupFixture - OneTimeSetup");
    }
    [OneTimeTearDown]
    public void RunAfterAllTests()
    {
      Console.WriteLine("Suite TearDown - OneTimeTearDown");
    }
  }
}

在下面的SuccessTests.cs中,SetupTearDown在每次测试之前和之后执行,因为这些方法是在标有 atttribute TestFixture 的类中定义的。 OneTimeSetup & OneTimeTearDown 属性定义了测试用例中要在类中的所有测试方法之前和之后执行一次的方法。

请参阅设置属性的文档[此处][2]。

成功测试.cs

namespace NUnit.Tests
{
  using System;
  using NUnit.Framework;
  [TestFixture]
  public class SuccessTests
  {
    [SetUp] 
    public void SetUp()
    {  Console.WriteLine("Test Setup"); }
    [TearDown]
    public void TearDown()
    {  Console.WriteLine("Test Teardown"); }

    [OneTimeSetup]
    public void OneTimeSetup()
    {  Console.WriteLine("Test Fixture - OneTimeSetup"); }
    [OneTimeTearDown]
    public void OneTimeTearDown()
    {  Console.WriteLine("Test Fixture - OneTimeTearDown"); }
    [Test]
    public void Test1()
    {  Console.WriteLine("Actual Test1"); }
    [Test]
    public void Test2()
    {  Console.WriteLine("Actual Test2"); }
  }
}

运行上述测试将给出此结果。

Suite Setup - OneTimeSetup
Test Fixture - OneTimeSetup
Test Setup
Actual Test1
Test Teardown
Test Setup
Actual Test2
Test Teardown
Test Fixture TearDown - OneTimeTearDown
Suite TearDown - OneTimeTearDown