Как правильно выбрать тип тестов (test type)?
Выбор наиболее подходящего типа тестов имеет огромное значение в процессе их генерации.
Тем не менее, не всегда очевидно, какой тип тестов следует выбрать. Нередко пользователи по-разному интерпретируют, что именно считать модульным, компонентным или интеграционным тестом. Более того, если используется фреймворк Spring, то необходимо учитывать его гибкость: существует множество наборов тестовых аннотаций, каждый из которых может приводить к немного различающемуся поведению.
Поэтому мы подготовили краткое руководство, которое поможет вам выбрать наиболее подходящий тип тестов при работе с Explyt.
“Same as in example tests”: стоит ли выбирать?
Кратко: это наилучший вариант, если в проекте уже написаны тесты, ориентируясь на которые следует генерировать новые.
Подробно: выбирая этот тип тестов, вы указываете, что выбранные примеры тестов являются образцом для генерации новых. Иными словами, вы инструктируете Explyt создавать тесты, используя те же аннотации (например, аннотации Spring), паттерны мокирования, способы инициализации данных, стиль кода, соглашения об именовании и так далее.
Если вы хотите ориентироваться на пример тестового класса, но реализовать некоторые детали по-своему, расскажите о них в поле More instructions
.
Важно помнить, что следование примеру эффективно только тогда, когда он действительно соответствует текущему контексту генерации тестов.
Подходят ли мои примеры тестов?
Explyt использует продвинутые алгоритмы и эвристики, чтобы автоматически определять наиболее подходящие примеры тестов в вашем проекте. Тем не менее, инструмент иногда всё же может выбрать нерелевантный тестовый класс.
В некоторых случаях выбор действительно подходящего примера и вовсе затруднителен. Например, вам необходим образец для тестирования Spring Controller, но все существующие тесты проверяют только утилитные классы или Spring-сервисы. Как известно, подходы к тестированию сервисов и контроллеров существенно различаются.
Когда Explyt не вполне уверен в корректности выбранного примера, он показывает предупреждение, предупреждающее о возможных проблемах. В таком случае особенно важно проверить предлагаемые примеры вручную и откорректировать их при необходимости. Даже если предупреждение не отображается, мы всё равно рекомендуем проверить предложенные инструментом примеры тестов.
Что делать, если подходящих примеров тестов у меня нет?
Explyt и в этой ситуации сможет помочь вам с генерацией тестов. Вам нужно будет выбрать подходящий шаблон для тестового класса, особенно важно это сделать в проектах на Spring.
Для подбора наиболее подходящего шаблона может потребоваться немного поэкспериментировать. Ниже мы приведём несколько советов, которые помогут вам сориентироваться при выборе.
При тестировании Spring Controllers:
- выберите
Component tests
, если вы хотите проверять только web layer приложения. - если вы хотели бы использовать
@SpringBootTest
,@ContextConfiguration
или другие аннотации, задающие другой скоуп Spring-контекста, следует выбратьIntegration tests
.
При тестировании Spring Repositories:
- выберите
Repository tests
, чтобы генерировать тесты для репозиториев (например, с аннотацией@DataJpaTest
).
При тестировании других классов:
- выберите
Unit tests
, чтобы генерировать тесты, не зависящие от Spring. - выберите
Integration tests
, если требуется инициализация Spring-контекста.
Если у вас остались вопросы, напишиите нам на support@explyt.com.