Тестирирование с xunit

7

Click here to load reader

Upload: alexander-goida

Post on 15-Apr-2017

270 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Тестирирование с xUnit

Автор: Александр Гойда, 2015г.

Тестирирование с xUnitВы узнаете:● Зачем тесты и познакомитесь с xUnit

● Как написать и запустить тест xUnit

● Узнаете о Fact, Theory, Fixture, Collections и контекстах

● Поговорим, почему не надо тестировать приватные методы

Page 2: Тестирирование с xUnit

Автор: Александр Гойда, 2015г.

Зачем тесты● больше уверенность в новых изменениях

● проще рефакторить, более изолированный код

● помогает избежать over-architecturing

● уменьшает время поддержки

Писать тесты НЕ НАДО если:● Вы всегда пишете код без ошибок, обладаете идеальной

памятью и даром предвидения● Ваш код изменять себя сам, делает это без ошибок, в

соответствии с требованиями● Ваш код абсолютно понятен и умеет объяснять, как он

работает и где есть “подводные камни”

Page 3: Тестирирование с xUnit

Автор: Александр Гойда, 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)

Page 4: Тестирирование с xUnit

Автор: Александр Гойда, 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. Используя стандартное меню, запускаем

ОЧЕНЬ ПРОСТО!

Page 5: Тестирирование с xUnit

Автор: Александр Гойда, 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/)

Page 6: Тестирирование с xUnit

Автор: Александр Гойда, 2015г.

За и Против тестирования private методовЗА:● можно быстро добиться

высокого покрытия тестами

● можно тестировать “внутренности”

● можно обойтись одним рабочим классом

ПРОТИВ:● “хрупкие” тесты

● непоказательные тесты

● не тестируют требования

● избыточные тесты

● меньше защищают от реинкарнации багов

Page 7: Тестирирование с xUnit

Автор: Александр Гойда, 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)