Skip to main content

Создать тест из реального запуска

Этот сценарий подходит, когда поведение сложно воспроизвести вручную в юнит-тесте. Veai записывает реальный вызов метода и создаёт по нему автономный тест с входными данными, результатом и моками внешних зависимостей.

Когда применять

  • нужный сценарий проще выполнить в работающем приложении, чем собрать вручную;
  • нужно зафиксировать поведение сложного метода перед изменениями;
  • ошибка уже проявилась во время запуска или в упавшем тесте;
  • для теста нужны реалистичные аргументы и ответы зависимостей.

Функция рассчитана прежде всего на Spring-проекты, но может использоваться с другим Java- и Kotlin-кодом.

Что подготовить

  • метод, поведение которого нужно зафиксировать;
  • воспроизводимый пользовательский или тестовый сценарий;
  • конфигурацию запуска приложения или теста либо доступ к работающему JVM-процессу;
  • тестовый класс как образец, если нужно сохранить принятый в проекте стиль.

Как создать тест

  1. Запустите функцию из метода, для которого нужен тест. Если у вас есть стектрейс упавшего теста, можно начать с команды Veai: Reproduce рядом с методом в стектрейсе.

  2. Выберите, создать новый тестовый класс или добавить тест в существующий.

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

  4. Выберите источник исполнения: конфигурацию запуска, локальный процесс или удалённую JVM.

    Если вы выбрали локальный процесс, Veai покажет доступные JVM-процессы:

    Параметры запуска JVM для записи исполнения

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

    Выбор локального JVM-процесса в Veai

    После запуска процесс появится в списке доступных источников исполнения.

  5. Запустите нужный сценарий в приложении и дождитесь вызова целевого метода.

  6. Завершите запись и запустите генерацию тестов.

  7. Просмотрите созданный тест: входные данные, моки, вызов метода и утверждения.

  8. При необходимости упростите тест, не меняя зафиксированное поведение.

Как проверить результат

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

Критерий готовности

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

Ограничения

Поддерживаются Java и Kotlin. Пока создаются только юнит-тесты. Нативные ресурсы, глубокие цепочки моков и некоторые внешние зависимости могут потребовать ручной доработки. Запись исполнения работает медленнее обычного запуска.

При подключении к удалённому процессу используйте только разрешённое тестовое окружение и учитывайте сетевые политики проекта.

Связанные страницы