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 ==========