Тестирирование с xunit
TRANSCRIPT
Автор: Александр Гойда, 2015г.
Тестирирование с xUnitВы узнаете:● Зачем тесты и познакомитесь с xUnit
● Как написать и запустить тест xUnit
● Узнаете о Fact, Theory, Fixture, Collections и контекстах
● Поговорим, почему не надо тестировать приватные методы
Автор: Александр Гойда, 2015г.
Зачем тесты● больше уверенность в новых изменениях
● проще рефакторить, более изолированный код
● помогает избежать over-architecturing
● уменьшает время поддержки
Писать тесты НЕ НАДО если:● Вы всегда пишете код без ошибок, обладаете идеальной
памятью и даром предвидения● Ваш код изменять себя сам, делает это без ошибок, в
соответствии с требованиями● Ваш код абсолютно понятен и умеет объяснять, как он
работает и где есть “подводные камни”
Автор: Александр Гойда, 2015г.
Что такое xUnit
Why Did we Build xUnit 1.0? (http://xunit.github.io/docs/why-did-we-build-xunit-1.0.html)Comparing xUnit.net to other frameworks (http://xunit.github.io/docs/comparisons.html)
Автор: Александр Гойда, 2015г.
Пишем и запускаем тесты xUnit1. Создаем обычный Class Library проект2. Добавляем из NuGet следующие пакеты в этот проект:
a. Install-Package xunit -Preb. VS: Install-Package xunit.runner.visualstudio -Pre c. R#: with plugin (ReSharper's Extension Manager)
3. Добавляем класс4. Добавляем метод с юнит тестом5. Используя стандартное меню, запускаем
ОЧЕНЬ ПРОСТО!
Автор: Александр Гойда, 2015г.
Fact, Theory, Fixture, Collections[Fact] - юнит-тест
[Theory] - параметризованый юнит-тест
fixture - класс для настройки и очистки контекста одного сьюта
collection - то же самое, для группы сьютов
Tests setup & teardown - интерфейс IDisposable*) можно использовать наследование при дизайне fixtures, но конструктор сьюта должен иметь конкретный тип, указанный в IClassFixture<T> или ICollcationFixture<T>.
Getting Started with xUnit.net (https://xunit.github.io/docs/getting-started.html)Shared Context between Tests (https://xunit.github.io/docs/shared-context.html)Data-driven test with xUnit (http://binary-notes.ru/data-driven-test-with-xunit/)
Автор: Александр Гойда, 2015г.
За и Против тестирования private методовЗА:● можно быстро добиться
высокого покрытия тестами
● можно тестировать “внутренности”
● можно обойтись одним рабочим классом
ПРОТИВ:● “хрупкие” тесты
● непоказательные тесты
● не тестируют требования
● избыточные тесты
● меньше защищают от реинкарнации багов
Автор: Александр Гойда, 2015г.
Соглашения● BDD/TDD● 3A pattern (Arrange, Act, Assert)● Isolation● структура фолдеров и солюшена
Так же:● TDD Anti-Patterns (http://blog.james-carr.org/2006/11/03/tdd-anti-patterns/)● Guidelines for Test-Driven Development (https://msdn.microsoft.com/en-us/library/aa730844(v=vs.80).aspx)● Introduction to Test Driven Development (TDD) (http://agiledata.org/essays/tdd.html)● Введение в программирование через поведение (BDD) (http://habrahabr.ru/post/216923/)● Common TDD Myths (http://www.pathfindersolns.com/common-myths-tdd/)● Busting TDD myths (Serhiy Kalinets, Ukraine) (http://www.youtube.com/watch?v=SAXKwiwaq90)