Методы класса [SetupFixture] [OneTimeSetup] и [OneTimeTearDown] не выполняются должным образом. Вместо того, чтобы запускать один раз до и после всех тестов в пространстве имен, они, похоже, полностью пропускаются или выполняются в неправильном порядке.
Фоновый сценарий:
Я разрабатываю проект тестирования автоматизации, в котором собираюсь использовать методы класса [SetupFixture] [OneTimeSetup] и [OneTimeTearDown] для инициализации и очистки отчетов об экстентах на глобальном уровне. Цель состоит в том, чтобы охватить несколько классов [TestFixture] в одном отчете в формате тест > узел. Чтобы понять, как работают эти аннотации, я создал этот пример настройки для проверки поведения этих атрибутов.
Кроме того, я ищу способ выполнить метод перед каждым запуском [TestFixture], аналогично тому, как [Setup] работает для методов [Test], но на уровне прибора. Я не добавлял логику для этого в код, но если кто-то предложит способ для этого, было бы здорово.
Пример кода:
ExtentReportManager.cs
Код: Выделить всё
namespace SamplePractice.TestCases
{
[SetUpFixture]
public class ExtentReportManager
{
public ExtentReportManager() { }
[OneTimeSetUp]
public void OneTimeSetUp()
{
Console.WriteLine("Global One Time SetUp executing");
}
[OneTimeTearDown]
public void OneTimeTearDown()
{
Console.WriteLine("Global One Time Tear Down executing");
}
}
}
Код: Выделить всё
namespace SamplePractice.TestBase
{
public class BaseClass
{
[SetUp]
public void Init()
{
Console.WriteLine("Setup Executing");
}
[TearDown]
public void Cleanup()
{
Console.WriteLine("Tear Down Executing");
}
}
}
Код: Выделить всё
using SamplePractice.TestBase;
namespace SamplePractice.TestCases
{
[TestFixture, Order(1)]
public class Class1 : BaseClass
{
[Test, Order(1)]
public void Class1Test1()
{
Console.WriteLine("Class1 Test 1 executing");
}
[Test, Order(2)]
public void Class1Test2()
{
Console.WriteLine("Class1 Test 2 executing");
}
}
}
using SamplePractice.TestBase;
namespace SamplePractice.TestCases
{
[TestFixture, Order(2)]
public class Class2 : BaseClass
{
[Test, Order(1)]
public void Class2Test1()
{
Console.WriteLine("Class 2 Test 1 executing");
}
[Test, Order(2)]
public void Class2Test2()
{
Console.WriteLine("Class 2 Test 2 executing");
}
}
}
- Гарантированный ExtentReportManager — это открытый класс с конструктором по умолчанию. .
- Поместил ExtentReportManager в пространство имен сборки, чтобы настроить таргетинг на всю сборку.
- Проверяет версию NUnit (3.14.0) на предмет конфигурации бегуна.
- Выполнение тестов с использованием средства запуска тестов Visual Studio и консоли NUnit (nunit3-console).
Код: Выделить всё
Setup Executing
Class1 Test 1 executing
Tear Down Executing
Setup Executing
Class1 Test 2 executing
Tear Down Executing
Setup Executing
Class 2 Test 1 executing
Tear Down Executing
Setup Executing
Class 2 Test 2 executing
Tear Down Executing
Код: Выделить всё
Setup Executing
Class1 Test 1 executing
Tear Down Executing
Setup Executing
Class1 Test 2 executing
Tear Down Executing
Setup Executing
Class 2 Test 1 executing
Tear Down Executing
Setup Executing
Class 2 Test 2 executing
Tear Down Executing
Global One Time SetUp executing
Global One Time Tear Down executing
Код: Выделить всё
Global One Time SetUp executing
Setup Executing
Class1 Test 1 executing
Tear Down Executing
Setup Executing
Class1 Test 2 executing
Tear Down Executing
Setup Executing
Class 2 Test 1 executing
Tear Down Executing
Setup Executing
Class 2 Test 2 executing
Tear Down Executing
Global One Time Tear Down executing
- Почему существует разница в выводе между Visual Studio тестовый бегун и консоль NUnit? Почему методы [OneTimeSetup] и [OneTimeTearDown] в [SetUpFixture] не выполняются должным образом?
- Как выполнить метод перед каждым запуском [TestFixture], аналогично [SetUp] для [ Test], но на уровне прибора.
- Обеспеченный ExtentReportManager — это общедоступный класс с конструктором по умолчанию.
- Размещен ExtentReportManager в пространстве имен сборки, чтобы настроить таргетинг на всю сборку.
- Проверяет версию NUnit (3.14). .0) для конфигурации бегуна.
- Выполняли тесты с использованием средства запуска тестов Visual Studio и консоли NUnit (nunit3-console).
Код: Выделить всё
Global One Time SetUp executing Setup Executing Class1 Test 1 executing Tear Down Executing Setup Executing Class1 Test 2 executing Tear Down Executing Setup Executing Class 2 Test 1 executing Tear Down Executing Setup Executing Class 2 Test 2 executing Tear Down Executing Global One Time Tear Down executingПодробнее здесь: https://stackoverflow.com/questions/789 ... cted-order
Мобильная версия