NUnit основы - Grooter2023/AQA_MTS GitHub Wiki
Кент Бек опубликовал структуру модульного тестирования для языка Smalltalk в 1999 году. Архитектура SmalltalkUnit (или SUnit) представляет собой золотую середину, идеальный баланс между простотой и полезностью.
Позже Эрих Гамма перенес SUnit на Java, создав JUnit. JUnit, в свою очередь, породил CppUnit, NUnit, PyUnit, XMLUnit и порты на многие другие языки. Теперь существует головокружительное множество фреймворков модульного тестирования, построенных на одной и той же модели. Эти фреймворки известны как семейство инструментов xUnit. Все это бесплатное программное обеспечение с открытым исходным кодом.
Основные Атрибуты NUnit для написания автотестов на C#
-
Атрибут SetUpFixture Все классы в проекте, помеченные атрибутом [TestFixture] означают что данный класс содержит автотесты и фактически это [тест сьют]. Внутри данного класса должны размещаться методы с атрибутами [Test] которые в свою очередь и означают что данные методы это тест кейсы (автотесты).
-
Атрибут OneTimeSetUp Допустимо использование нескольких таких атрибутов. Используется для одноразовой настройки перед тестовым запуском. Если вы запустите n тестов, это событие произойдет только один раз. Пример: создание пользователя, открытие браузера, открытие страницы с логином.
-
Атрибут SetUp Необязателен. Используется исключительно для предтестовой настройки. До начала каждого теста, предварительные действия. Например: открытие браузера.
-
Атрибут TearDown Необязателен. Используется для демонтажа. Например: закрытие браузера. Откат настроек выставленных в SetUP.
-
Атрибут OneTimeTearDown Используется для однократного отключения.
Если вы запустите n тестов, это событие произойдет только один раз.
Пример:
namespace NUnitTest;
public class PrePostConditionExample
{
private int i = 0;
[OneTimeSetUp]
public void OneTimeSetUp()
{
Console.WriteLine($"{this}: OneTimeSetUp...{++i}");
}
`[SetUp]`
`public void Setup1()`
`{`
`Console.WriteLine($"{this}: SetUp...{++i}");`
`}`
`[Test]`
`public void Test1()`
`{`
`Console.WriteLine($"{this}: Test...{++i}");`
`}`
`[SetUp]`
`public void Setup2()`
`{`
`Console.WriteLine($"{this}: SetUp...{++i}");`
`}`
`[Test]`
`public void Test2()`
`{`
`Console.WriteLine($"{this}: Test...{++i}");`
`}`
`[TearDown]`
`public void TearDown()`
`{`
`Console.WriteLine($"{this}: TearDown...{++i}");`
`}`
`[OneTimeTearDown]`
`public void OneTimeTearDown()`
`{`
`Console.WriteLine($"{this}: OneTimeTearDown...{++i}");`
`}`
}
// Building Test Projects Starting test discovery for requested test run ========== Starting test discovery ========== NUnit Adapter 4.5.0.0: Test discovery starting NUnit Adapter 4.5.0.0: Test discovery complete ========== Test discovery finished: 73 Tests found in 763,8 ms ========== ========== Starting test run ========== NUnit Adapter 4.5.0.0: Test execution started Running selected tests in C:\Users\Tanya\source\repos\AQA_MTS\NUnitProject\bin\Debug\net8.0\NUnitProject.dll NUnit3TestExecutor discovered 2 of 2 NUnit test cases using Current Discovery mode, Non-Explicit run NUnitTest.PrePostConditionExample: SetUp...2 NUnitTest.PrePostConditionExample: SetUp...3 NUnitTest.PrePostConditionExample: Test...4 NUnitTest.PrePostConditionExample: TearDown...5
NUnitTest.PrePostConditionExample: SetUp...6 NUnitTest.PrePostConditionExample: SetUp...7 NUnitTest.PrePostConditionExample: Test...8 NUnitTest.PrePostConditionExample: TearDown...9
NUnit Adapter 4.5.0.0: Test execution complete ========== Test run finished: 2 Tests (2 Passed, 0 Failed, 0 Skipped) run in 358 ms ==========