Unit test генератор корпусов

Кто-нибудь пробовал какие-либо генераторы Unit Test для .Net?

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

Спасибо.

Ответы

Ответ 1

Unit test генерация - неправильный способ проведения модульного тестирования. Правильный способ проведения модульного тестирования состоит в том, чтобы создать тестовые примеры, прежде чем писать функциональный код, а затем разработать свой код, пока тесты не подтвердятся, это известно как TDD (Test Driven Development).

Одна из основных причин генерации unit test - плохая идея, потому что, если в вашем существующем коде есть какие-либо ошибки, тесты будут генерироваться против этих ошибок, поэтому, если вы исправите их в будущем, плохие тесты будут сбой, и вы предположите, что что-то сломано, когда оно действительно исправлено.

Но поскольку код написан, он теперь под мостом. И возможные тесты с ошибкой лучше, чем никакие модульные тесты вообще. Я всегда предпочитал NUnit и там был установлен NUnit тестовый генератор здесь (очень доступный).

Ответ 2

Вы считали Pex? Это от Microsoft Research.

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

Ответ 3

Несколько лет назад я модифицировал Haskell QuickCheck, чтобы чисто функциональный Test Driven Development с генеративными тестами. Мое решение состояло в том, чтобы сохранить семя PRNG для того, что создало неудачный тестовый пример, и запустить будущие тесты с тем же самым семенем.

Недавно я получил .NET-работу, и Google обнаружил, что MbUnit сделал имеют поддержку генеративных тестов в 2004 году. Я также нашел более поздний Gallio, но у меня была какая-то проблема с использованием это, я точно не помню, что.

Итак, TDD и генеративное тестирование не являются взаимоисключающими, Gallio - единственная последняя версия .NET, которую я видел, и я не помню, почему я ее не использую сейчас.

Ответ 5

Я создал ErrorUnit генератор unit test для .Net

Использование генератора для разработки TDD, безусловно, практично; например, при кодировании того, что происходит при нажатии кнопки, способ использования ErrorUnit в TDD-способе:

1) Сначала создайте тест вручную, чтобы убедиться, что есть событие нажатия кнопки; затем создайте событие и протестируйте его в соответствии с чистым TDD.

2) Затем запустите программу, перейдите к экрану с помощью кнопки и с точкой останова, установленной в методе событий, нажмите кнопку

3) Когда точка останова ударяется, вы можете щелкнуть ErrorUnit "Добавить unit test", чтобы сгенерировать unit test, когда все объекты и текущее состояние базы данных уже издевались. (Повторите, если необходимо, в разных случаях использования)

4) Затем вы измените созданные модульные тесты, чтобы иметь подтверждение, чтобы он соответствовал результату того, что вы хотите, чтобы кнопка нажала кнопку "делать" в соответствии с TDD.

5) Затем напишите код за событием клика и запустите свой тест, который является частью, сгенерированной ErrorUnit (для Arrange and Act) и частью custom (для Assert).

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

ErrorUnit также работает с регистрацией ошибок для воспроизведения ошибок в других средах путем сериализации и издевательств в unit test точном состоянии во время ошибки; Приведение TDD к разрешению производственных проблем.