Ли вы утверждаете.Таким образом его любовь или некоторые другие бета-средство nunit посвящена...

Ли вы утверждаете.Таким образом его любовь или некоторые другие бета-средство nunit посвящена В3

526

Не так давно он выпустил первую бета-версию средство nunit тестирования В3. Посреди остального , эта версия реализует параллельное выполнение тестов (практически из коробки). В частности, предлагается заместо атрибут expectedexception применять assert.Thorws либо утверждать.Что. Я решил проверить как она работает на одном настоящем проекте и нашли, что в новейшей версии средство nunit-и не поддерживает используемая часть частей из прошлых версий. Вне зависимости от выпуска данной бета-версии, в одном из проектов начал применять модель отстаивать.Все остальные способы и атрибуты средство nunit.
Под катом маленький опыт в переводе expectedexception, так атрибут в модели утверждать.Что.

Естественно я желал бы заавтоматизировать процесс перехода. Как оказалось, в тестовом проекте, я решил перевести под средство nunit В3. содержит наиболее 100 видов использования атрибут expectedexception.
Традиционно в прошедшем, но раз предшествующий способ будет кидать же исключение, то тест не будет работать подабающим образом. В любом случае, существует некая неопределенность», где по-прежнему ждут исключительные ситуации.»
[Тест]
[Expectedexception, так(употребляется typeof(исключение argumentexception))]
публичного недействительными TestExpectedException()
{
foo1();
foo4();
foo1();
} Любопытно, что раз ранее атрибут expectedexception показалась чрезвычайно неплохой, мы не так давно нашел несколько заморочек:
К примеру, последующий тест не чрезвычайно понятно, в какой строке ожидается исключительная ситуация.
Другое дело, что волнует, это доклады на «покрытие кода», т. е. запустить dotCover, расследовать отчет и лицезреем:

Но будут изменены на утверждение.И еще одна вещь: получить 100% — ный охват.

Опосля я сообразил, что поменять «руки» это очень легкий путь:), я решил написать плагин для resharper, который дозволяет переводить дизайн в средство nunit модель отстаивать.Что.
И я начал с тех, которые мне необходимо перевести мой тестовый проект.
Поначалу это было достаточно просто:
[Тест]
[Expectedexception, так]
публичного недействительными TestShortExpectedException()
{
foo1();
функции foo2();
foo1();
}

переведенные в
[Тест]
публичного недействительными TestShortExpectedException()
{
foo1();
Способ Assert.Что(функции foo2, кидает.Исключение);
foo1();
}

Наиболее непростой пример potreboval применять анонимный способ
[Тест]
[Expectedexception, так]
публичного недействительными TestExpectedExceptionWithExpressions()
{
два раза я = 2 + getNumber();
}

[Тест]
публичного недействительными TestExpectedExceptionWithExpressions()
{
Способ Assert.Что(() => { двойной я = 2 + getNumber(); }, кидает.Исключение);
}

Определенные ожидаемые Тип востребовали выполнения бросков.Команда typeof
[Тест]
[Expectedexception, так(употребляется typeof(исключение argumentexception))]
публичного недействительными TestExpectedException()
{
foo1();
foo4();
foo1();
}

[Тест]
публичного недействительными TestExpectedException()
{
foo1();
Способ Assert.Что(() => { foo4(); }, кидает.Команда Typeof<Значение>());
foo1();
}

Ожидаемые текстовые сообщения исключительной ситуации (либо по-русски, «сообщение, которое смотрится acceptin») с просьбой добавить .И.Сообщение
[Тест]
[Expectedexception, так(употребляется typeof(NotImplementedException), ExpectedMessage = «службы Сообщений»)]
публичного недействительными TestExpectedExceptionWithCustomermessage()
{
foo4(«службы Сообщений»);
}

[Тест]
публичного недействительными TestExpectedExceptionWithCustomermessage()
{
Способ Assert.Что(() => { foo4(«службы Сообщений»); }, кидает.Команда Typeof<NotImplementedException>().И.Сообщение.EqualTo(«службы Сообщений»));
}
[Тест]
[Expectedexception, так(употребляется typeof(NotImplementedException), ExpectedMessage = «службы Сообщений», MatchType = MessageMatch.Содержит)]
публичного недействительными TestExpectedExceptionWithCustomermessage()
{
foo4(«мои службы Сообщений»);
} Хотя не все конструкции поддерживаются: к примеру, программное обеспечение mathtype не преобразуются верно.
Пользовательские структуры — функция мощная, но, видимо, в случае сложных конструкций все равно не гладко. Конвертировать проекты утверждать.IsNullOrEmpty и утверждать.IsNotNullOrEmpty realizar без программирования, но лишь через пользовательские структуры. Утверждать — конструкция проста и никаких заморочек не было:

Сейчас поддерживает маленький набор конструкций. Тестировал лишь на в resharper-е версии 8.2. Плагин именуется «средство nunit.Что.В resharper.Плагин» и ее бета-версия доступна для загрузки через «в resharper — Управление расширениями».
Зрительно работа плагина смотрится так:
выбрать на подходящей строке заменить

и преобразуются в выражения (expectedexception, так атрибут может быть удален)

все еще бета (будьте аккуратны с документацией!), вы сможете начать на данный момент, чтоб испытать на тестовых проектов и приготовить настоящий;
— полный цикл (в том числе викторины и распределение) писать плагины для resharper для вещь не таковая непростая, как может показаться, и может быть применено для решения не лишь общих, но и местных заморочек. Выводы:
— Утверждать.Что показалась мне чрезвычайно симпатичной модели;
— Средство nunit В3.
В resharper SDK дозволяет Для вас создавать зрительные студии проектов на базе шаблонов, что существенно упрощает задачку. Я желал бы выразить необыкновенную благодарность команде в resharper (и лично mezastel), которые посодействовали осознать индивидуальности развития плагины.
Ссылки:
— проект на github https://github.com/constructor-igor/NUnit.That.Resharper.Plugin
— плагин средство nunit.Что.В resharper.Плагин в Галерии https://resharper-plugins.jetbrains.com/packages/NUnit.That.Resharper_v8.Plugin/
Ссылки на примеры и документацию
— документация для разраба и для resharper resharper для DevGuide;
пост «написать плагин для resharper-это не так уж и трудно»
Агент Малдер плагин для resharper для habrahabr.ru