У меня есть бэкэнд Spring Boot, где я запускаю интеграционные тесты для своих контроллеров (конечные точки) и модульные тесты для своих методов обслуживания. Для некоторых конечных точек существуют только простые вызовы служб, которые возвращаются так же, как служба возвращает данные.
Лучше всего создать только интеграционный тест для проверки конечной точки, создать только модульный тест для проверки метода службы или мне следует добавить оба?
Мой ответ: если вы не уверены в определенной части кода, напишите как можно больше тестов. Интеграционное тестирование предназначено не только для тестирования конечных точек, а модульное тестирование — не только для тестирования сервисов.
Вам необходимо понять, что такое интеграционные тесты, модульные тесты и почему вам следует писать эти два типа тестов. Интеграционное тестирование выполняет функции нескольких модулей вместе. Поскольку задействовано много функций, необходимо подготовить множество условий (например, базы данных, исходные данные), а время выполнения велико; модульное тестирование проверяет конкретный метод. Интеграционное тестирование фокусируется на целом, модульное тестирование — на частях.
Рекомендуется прочитать книги, посвященные разработке через тестирование, и вы лучше поймете, как писать эти два типа тестов.
Чего вы хотите достичь:
Протестируйте поведение системы, чтобы вы могли с уверенностью развертывать и развивать свою систему. Если вы создаете тесты во время разработки своего бизнес-кода, вы должны знать посредством своих тестов, что поведение кода не изменилось.
Давайте сначала проанализируем, что у вас есть:
Обеспокоенность:
Отвечать:
Как видите, проблем много, а четкого ответа на ваш вопрос нет. Если бы мне пришлось дать четкий ответ на ваш вопрос, я бы сделал следующее:
Минус в том, что у вас нет тестового сценария, где вы тестируете все вместе, но, как всегда в жизни, нет правильного и неправильного, а есть что-то среднее, и вам нужно выбрать путь.
Вы также можете создать тест для проверки интеграции между Spring Framework (обработка HTTP), вашим контроллером и уровнем обслуживания. Тестирование — очень спорная тема, на которую нет однозначного ответа. Действительно сложно сказать, что тестировать, а что заглушить и что на самом деле представляет собой модуль? Класс или только части класса или даже несколько классов с одинаковой ответственностью? Для начала могу порекомендовать эту статью: martinfowler.com/articles/practical-test-pyramid.html