Класс nUnit SetupFixture в C # не вызывается при запуске тестов

Справочник по nUnit SetupFixture

Мое решение настроено таким образом, с использованием функций SpecFlow Gherkin
Решение
- Проект тестирования
- Функции
- Шаги
- Проект Pages
- - Страницы

Я запускаю средство запуска тестов nUnit с помощью такой команды:

"C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe" ".\bin\Dev\Solution.dll"

И я добавил этот код в папку шагов структуры проекта выше.

using System;
using NUnit.Framework;

namespace TestsProject.StepDefinitions
{
    /// <summary>
    /// This class needs to be in the same namespace as the StepDefinitions
    /// see: https://www.nunit.org/index.php?p=setupFixture&r=2.4.8
    /// </summary>
    [SetUpFixture]
    public class NUnitSetupFixture
    {
        [SetUp]
        public void RunBeforeAnyTests()
        {
            // this is not working
            throw new Exception("This is never-ever being called.");
        }

        [TearDown]
        public void RunAfterAnyTests()
        {
        }
    }
}

Что я делаю неправильно? Почему перед началом всех тестов nUnit не вызывает [SetupFixture]?


person jmbmage    schedule 16.06.2017    source источник
comment
Какую версию фреймворка NUnit вы используете?   -  person Chris    schedule 16.06.2017


Ответы (1)


Используйте атрибуты OneTimeSetUp и OneTimeTearDown для SetUpFixture, поскольку вы используете NUnit 3.0 вместо атрибутов SetUp и TearDown, как подробно описано в здесь.

using System;
using NUnit.Framework;

namespace TestsProject.StepDefinitions
{
    [SetUpFixture]
    public class NUnitSetupFixture
    {
        [OneTimeSetUp]
        public void RunBeforeAnyTests()
        {
            //throw new Exception("This is called.");
        }

        [OneTimeTearDown]
        public void RunAfterAnyTests()
        {
        }
    }
}
person Jamleck    schedule 16.06.2017
comment
Спасибо! Я наконец заставил его работать, прочитав ссылку, которой вы поделились, и обнаружил следующее: SetUpFixture вне любого пространства имен предоставляет SetUp и TearDown для всей сборки. - person jmbmage; 16.06.2017
comment
Помещение кода в namespace TestsProject вместо namespace TestsProject.StepDefinitions тоже работает. - person jmbmage; 16.06.2017
comment
Да оба работают. SetUpFixture вызывается для настройки любого пространства имен, в котором он находится, и запускается до и после каждого теста в этом пространстве имен и ниже. Это позволяет вам иметь несколько фикстур для разных пространств имен. - person Rob Prouse; 17.06.2017