Подтвердить что ты не робот

Автоматическая генерация модульных тестов для Java?

Любой инструмент для автоматического создания модульных тестов для кода Java?

UPDATE: Основное предназначение - быстро произвести модульные тесты для устаревшего кода, который будет реорганизован. Нет необходимости автоматически сохранять тесты в синхронизации с кодом после автоматической генерации.


Здесь был задан почти такой же вопрос, но ответ был для .NET вместо Java (Pex был принятым ответом):

Автоматическая генерация случаев Unit test для .NET и Java

4b9b3361

Ответ 1

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

Ответ 2

Коммерческие инструменты:

  • AgitarOne кажется самым большим игроком в этой области. Существует также 30-дневная пробная версия и бесплатный веб-интерфейс под названием JUnit Factory. Например, независимый обзор использования инструмента в здесь. Генерация тестов AgitarOne в значительной степени фокусируется на тестах регрессии.
  • Jtest - еще один крупный игрок, который существует с 1998 года. Существует бесплатная пробная версия. И AgitarOne, и Jtest были награждены несколько раз, и они являются и IDE на основе Eclipse: s.
  • SilverMark Test Mentor, Java Edition - это коммерческий продукт, который, по-видимому, также может создавать тесты на основе Java-кода. Этот продукт у меня нет опыта.

Бесплатные инструменты:

  • CodePlex AnalytiX раньше был коммерческим инструментом (это был первый коммерческий плагин для Eclipse в 2001 году), но так как Google купил компанию продукт был выпущен как бесплатный. Это полная IDE, основанная на Eclipse и финалист Jolt Award в тестовом поколении в 2007 году. Особенности хороши, но инструмент не обновлялся в течение длительного времени, поэтому, к сожалению, он не работает с текущими версиями eclipse и похоже, имеет проблемы с кодом, требующим java >= 1.5.
  • EvoSuite является aa победителем SBST (программное обеспечение на основе поиска Тестирование) '13 unit test конкурс поколений, а также конкурс SBST '17 unit test. Существует плагин Eclipse, веб-интерфейс и версия командной строки инструмента. Существуют критерии регрессии, задокументированные, но, по-видимому, это еще не сработало - тесты дали цель для охвата веток, слабого охвата мутаций или сильного охвата мутаций.
  • Randoop использует метод генерирования случайных результатов с обратной связью. Этот инструмент существует с 2007 года и постоянно развивается. Randoop может производить как регрессионные тесты, так и тесты на выявление ошибок. Это надежный и надежный инструмент командной строки, а также плагин Eclipse.
  • Palus утверждает, что использует как динамический, так и статический анализ, и строит поверх Randoop. Его авторы утверждают, что он использовался внутри компании Google. Мой опыт работы с этим программным обеспечением заключается в том, что, по крайней мере, текущая версия (0.2), похоже, имеет некоторые внутренние проблемы, и она, похоже, не масштабируется хорошо.
  • Daikon, Eclat, Javalanche, Java PathFinder, JCrasher, jWalk, Korat, RecGen и ReCrash являются бесплатными инструментами, которые также доступны.

Обратите внимание, что тесты, созданные Jtest и AgitarOne, зависят от лицензированных проигрывателей, и они не могут быть запущены, если у вас нет интегрированных плагинов. Это не касается бесплатных инструментов, которые я тестировал, которые генерируют независимые тесты.

Отказ от ответственности: я не связан ни с одним из этих инструментов, но я провел академические исследования по этому вопросу.

Ответ 3

NetBeans делает это автоматически из исходных файлов Java (я думаю, другие IDE тоже).

Возможно, вы можете заглянуть в плагин junit (ссылка в настоящее время недоступна: -()?

Ответ 4

Я думаю, что у Agitar был такой инструмент, как AgitarOne. Я думаю, вы все равно можете получить его, но убедитесь, что компания все еще там.

Ответ 5

Netbeans 8 имеет встроенную возможность построения модульных тестов, которые больше чем заглушки. Чтобы использовать эту функцию:

  • Откройте класс, который вы хотите проверить.
  • Выберите Create/Update Tests в меню Tools.
  • Выберите любые функции, которые вы хотите.
  • Откройте созданный unit test и завершите оставшиеся части теста.

Ответ 6

Как насчет использования Randoop https://randoop.github.io/randoop/. Это работает как для Java, так и для .NET.