У меня есть класс обслуживания MyBusinessService с 2 методами doABC() и doXYX(). Метод doABC() делегирует работу ABCHandler.do(), а метод doXYX() делегирует работу XYZHandler.do(). Методы класса MyBusinessService просто делегируют работы соответствующим обработчикам.Java - модульные тестовые примеры для делегирования класса
У меня есть вопрос здесь. Когда я пишу Unit для этого, я должен написать модульные тесты для методов в обработчиках. Должен ли я писать UT для методов класса MyBusinessService. Я задаю этот вопрос по двум причинам.
a. В тестах UT одна функциональность не должна тестироваться в двух местах. Моя фактическая логика находится в классах обработчиков, и я не должен тестировать одну и ту же логику как в классе обработчика, так и в классе обслуживания
b. Если я не буду писать модульный тест для методов класса MyBusinessService, то в будущем, если какой-нибудь разработчик исправит ошибку и что-то сломает, это может привести к сбою приложения в производстве. Итак, мне нужен тест здесь. Но если я напишу тестовый пример для этого класса, это нарушит правило (a).
Пожалуйста, дайте мне знать, следует ли мне писать UT для делегирования класса (класс MyBusinessService) или я должен оставить его в тестовых случаях интеграции для его решения.
Используйте шпиона или макет (см 'Mockito.spy()' или 'Mockito.mock()', например) и тест для правильного делегация? –
Где вы получили правило a? На мой взгляд, всегда ошибаться на стороне слишком много тестирования, а не на недостаточном уровне. Если это означает дублирование некоторых тестов, пусть так и будет. – DanK
@RC, я хочу знать, действительно ли нужно писать UT для проверки делегирования? Потому что он автоматически проверяется. – javalearner