Создать тест из реального запуска
Этот сценарий подходит, когда поведение сложно воспроизвести вручную в юнит-тесте. Veai записывает реальный вызов метода и создаёт по нему автономный тест с входными данными, результатом и моками внешних зависимостей.
Когда применять
- нужный сценарий проще выполнить в работающем приложении, чем собрать вручную;
- нужно зафиксировать поведение сложного метода перед изменениями;
- ошибка уже проявилась во время запуска или в упавшем тесте;
- для теста нужны реалистичные аргументы и ответы зависимостей.
Функция рассчитана прежде всего на Spring-проекты, но может использоваться с другим Java- и Kotlin-кодом.
Что подготовить
- метод, поведение которого нужно зафиксировать;
- воспроизводимый пользовательский или тестовый сценарий;
- конфигурацию запуска приложения или теста либо доступ к работающему JVM-процессу;
- тестовый класс как образец, если нужно сохранить принятый в проекте стиль.
Как создать тест
-
Запустите функцию из метода, для которого нужен тест. Если у вас есть стектрейс упавшего теста, можно начать с команды Veai: Reproduce рядом с методом в стектрейсе.
-
Выберите, создать новый тестовый класс или добавить тест в существующий.
-
Укажите, нужно ли сохранять успешные вызовы, вызовы с исключением либо только исполнения, которые прошли через выбранную точку останова.
-
Выберите источник исполнения: конфигурацию запуска, локальный процесс или удалённую JVM.
Если вы выбрали локальный процесс, Veai покажет доступные JVM-процессы:

Для подключения запустите JVM с включённым отладочным портом.

После запуска процесс появится в списке доступных источников исполнения.
-
Запустите нужный сценарий в приложении и дождитесь вызова целевого метода.
-
Завершите запись и запустите генерацию тестов.
-
Просмотрите созданный тест: входные данные, моки, вызов метода и утверждения.
-
При необходимости упростите тест, не меняя зафиксированное поведение.
Как проверить результат
- запустите созданный тест отдельно;
- проверьте, что он воспроизводит нужный успешный результат или исключение;
- убедитесь, что тест не зависит от реальной базы данных, сети и других внешних систем, если они должны быть заменены моками;
- запустите связанный набор тестов;
- просмотрите изменения в Agent Changes.
Критерий готовности
Тест готов, когда он воспроизводимо запускается отдельно, проверяет нужное поведение, использует понятные входные данные и не требует исходного приложения или внешних зависимостей для повторного выполнения.
Ограничения
Поддерживаются Java и Kotlin. Пока создаются только юнит-тесты. Нативные ресурсы, глубокие цепочки моков и некоторые внешние зависимости могут потребовать ручной доработки. Запись исполнения работает медленнее обычного запуска.
При подключении к удалённому процессу используйте только разрешённое тестовое окружение и учитывайте сетевые политики проекта.