NUnit, как мне выполнить исходный код до и после запуска набора тестов
NUnit тесты различных сборок собираются и выполняются в рамках TestSuite. TestSuites является *.nunit
проект, созданный с помощью NUnit GUI-runner.
Для конкретных целей тестирования мне нужно выполнить скрипт до, а также после выполнения всех тестов в этом .nunit
Тестирование.
Как я могу добиться этого, сохраняя уверенность в том, что скрипт не выполняется где-то посередине TestSuite. Порядок выполнения тестовых случаев!
Состав:
TestSuite_AllTests.nunit
-> ### Run Script BEFORE ###
-> Assembly1.Test
-> TestClass1
-> TestCase1
-> TestCase2
-> TestClass2
-> TestCase1
-> TestCase2
-> Assembly2.Test
-> TestClass1
-> TestCase1
-> TestCase2
-> ### Run Script AFTER ###
1 ответ
Определите свой Suite
и затем добавьте два метода с атрибутами в класс:
[TestFixtureSetUp]
для кода, выполняемого до набора,[TestFixtureTearDown]
для кода, выполняемого после набора.
Пример кода:
public class AllTests
{
[TestFixtureSetUp]
public void Setup()
{
Console.WriteLine("### Run Script BEFORE ###");
}
[TestFixtureTearDown]
public void Teardown()
{
Console.WriteLine("### Run Script AFTER ###");
}
[Suite]
public static IEnumerable Suite
{
get
{
var suite = new ArrayList();
suite.Add(new Assembly1.TestClass1());
suite.Add(new Assembly1.TestClass2());
suite.Add(new Assembly2.TestClass1());
return suite;
}
}
}
Затем запустите NUnit GUI или NUnit Console с помощью параметра /fixture: командной строки.
Например:
nunit-console /fixture:NUnit.Tests.AllTests nunit.tests.dll
Выход для вышеуказанного кода будет следующим:
### Run Script BEFORE ###
***** Assembly1.TestClass1.Test1
***** Assembly1.TestClass1.Test2
***** Assembly1.TestClass2.Test1
***** Assembly1.TestClass2.Test2
***** Assembly2.TestClass1.Test1
### Run Script AFTER ###
Однако вы не можете сохранить такой пакет как файл.nunit.
Как отмечено в документации NUnit Suite:
Поддержка NUnit для пользовательских наборов в настоящее время имеет два ограничения:
- Невозможно включить отдельные тестовые примеры непосредственно в пакет с использованием нового подхода. Любой, кто захочет это сделать, должен будет использовать старый подход и создать объект, производный от NUnit.Core.TestCase. Это не рекомендуется, так как требует ссылки на сборку ядра.
- Наборы в настоящее время не отображаются в графическом интерфейсе или запускаются автоматически любым бегуном, когда они встречаются. Историческая цель механизма Suite состояла в том, чтобы обеспечить способ агрегирования тестов на верхнем уровне каждого запуска. Следовательно, они поддерживаются только при использовании с параметром / fixture в консоли или командной строке графического интерфейса.
Подходы к устранению этих ограничений изучаются в рамках планирования будущих выпусков NUnit.