Вопрос

Существует ли такая вещь, как генерация модульных тестов?Если это так...

..хорошо ли это работает?

...Какие решения для автоматической генерации доступны для .NET?

... есть ли примеры использования подобной технологии?

... это хорошо только для определенных типов приложений, или его можно использовать для замены всего написанного вручную модульного тестирования?

Это было полезно?

Решение

Взгляните на Пекс.Это исследовательский проект Microsoft.С веб-сайта:

Pex генерирует модульные тесты на основе написанных вручную параметризованных модульных тестов с помощью автоматического поискового тестирования, основанного на динамическом символьном выполнении.

Другие советы

Я считаю, что в том, что касается TDD, нет смысла генерировать модульные тесты.

Вы проводите модульные тесты только для того, чтобы быть уверенным, что вы (как разработчик) на верном пути в отношении дизайна и спецификаций.Как только вы начинаете автоматически генерировать тесты, он теряет эту цель.Конечно, это, вероятно, означало бы 100% покрытие кода, но это покрытие было бы бессмысленным и пустым.

Автоматизированные модульные тесты также означают, что ваша стратегия заключается в тестировании после, что противоположно принципу TDD "тест до".Опять же, TDD - это не тесты.

При этом я считаю, что у MSTest действительно есть инструмент автоматической генерации модульных тестов - я смог использовать его с VS2005.

Обновлено на 2017 год:

Модульный Тестовый Шаблонный Генератор работает в течение 2015-2017 годов и поддерживается в рабочем состоянии.Кажется, работает так, как рекламируется.

Я создал 'ErrorUnit', и он генерирует модульные тесты MSTest или NUnit из вашей приостановленной Visual Studio или из ваших журналов ошибок;До сих пор имитировал переменные класса, Параметры метода и доступ к данным EF.(http://ErrorUnit.com)

Ни один генератор модульных тестов не может сделать все;Модульные тесты классически разделены на три части: Arrange, Act и Assert;часть упорядочивания - это самая большая часть модульного теста, и она устанавливает все предварительные условия для теста, имитируя все данные, с которыми будут выполняться действия в тесте, часть действия модульного теста обычно состоит из одной строки и активирует часть тестируемого кода, передающую эти данные, и, наконец, часть утверждения теста принимает результаты части действия и проверяет, что они соответствовали ожиданиям (может быть ноль строк, если просто убедиться в отсутствии ошибки).

Генераторы модульных тестов обычно могут выполнять только части "Упорядочивания" и "Действия" при создании модульного теста;однако генераторы модульных тестов обычно не пишут части 'Assert', поскольку только вы знаете, что правильно, а что неправильно для ваших целей.Таким образом, для полноты картины необходим некоторый ручной ввод / расширение модульных тестов.

Я согласен с Джоном.Определенные типы тестирования, такие как автоматическое нечеткое тестирование, определенно выигрывают от автоматической генерации.Хотя для достижения этой цели вы можете использовать возможности платформы модульного тестирования, это не позволяет достичь целей, связанных с хорошим покрытием модульным тестированием.

Parasoft .ТЕСТ имеет функционал генерации тестов.Он использует фреймворк NUnit для описания тестов и оценки утверждений.

Можно подготовить набор регрессионных тестов путем автоматической генерации сценариев (построение входных данных и вызов тестируемого метода) и создания утверждений, основанных на текущем поведении базы кода.Позже, после того, как тестируемая база кода эволюционирует, утверждения указывают на регрессии или могут быть легко записаны снова.

Я использовал NStub чтобы заглушить тест для моих занятий.Это работает довольно хорошо.

Я использовал инструменты для создания тестовых примеров.Я думаю, что это хорошо работает для тестирования более высокого уровня, ориентированного на конечного пользователя.Материал, который является частью приемочного тестирования пользователей, в большей степени, чем чистое модульное тестирование.

Я использую инструменты модульного тестирования для этого приемочного тестирования.Это хорошо работает.

Видишь Инструменты для создания тестовых примеров.

Существует коммерческий продукт под названием AgitarOne (www.agitar.com), который автоматически генерирует тестовые классы JUnit.
Я не использовал его, поэтому не могу прокомментировать, насколько он полезен, но если бы я сейчас делал Java-проект, я бы смотрел на него.

Я не знаю об эквиваленте .net (Agitar анонсировал версию .net, но AFAIK она так и не материализовалась).

Я знаю, что этот поток старый, но для всех разработчиков есть хорошая библиотека под названием unit test generator:

https://visualstudiogallery.msdn.microsoft.com/45208924-e7b0-45df-8cff-165b505a38d7

Хороший разработчик

Генныймкгенфейс создает модульный тест для каждой функции в вашем классе и генерирует объекты со случайными словами / значениями в каждом параметре.

  • Создавайте модульные тесты для каждой функции в вашем классе
  • Вычисляет допустимые случайно сгенерированные значения для входных параметров и оператора returns.
  • Макетные интерфейсы возвращают допустимые случайно сгенерированные значения
  • Создавайте модульные тесты для каждой функции в вашем классе
  • Импортирует все необходимые пространства имен в ваш тестовый класс

Это помогает в настройке ваших модульных тестов, особенно если у вас есть входные объекты с большим количеством параметров.

Модульный тест будет выглядеть примерно так

Селен генерирует модульные тесты из пользовательских команд на веб-странице, довольно изящно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top