Обычно вы тестируете только те методы, в которых есть какая-то логика c. Вызов System.out.println не считается логическим c.
С точки зрения управляемой тестированием работы с методами, которые не имеют побочных эффектов, проще, так как они принимают некоторые параметры и возвращают В результате ваш метод является совершенно противоположным, и поэтому его очень сложно протестировать.
Единственный жизнеспособный подход в вашем случае (помимо утверждения, что ваш метод не сложен даже для тестирования) - это разделить ваш метод на один. он создает String
(этот метод может быть протестирован), а тот, который вызывает другой метод и печатает результат (вызов метода anouther (в другом классе, называемом службой), может тестироваться с помощью множества платформ (например, Mockito). System.out.println очень сложно протестировать, вы можете извлечь поставщика для потока (System.out
) и убедиться, что он действительно возвращает System.out
, и снова проверить, что println
вызывается в предоставленном потоке.
Глядя на эту структуру теста указывает на тот факт, что базовый метод не только опирается на побочные эффекты, но это также делать три вещи одновременно (тогда как идеальные методы делают только одно). он создает Object
(здесь String
), получает и OutStream
(здесь System.out
) и использует оба вместе (println
).
Да, это может показаться слишком сложным но с точки зрения обучения это показывает, что даже спрятанное во что-то столь простое, как это, здесь много сложностей и, если все сделано правильно, можно многому научиться в отношении объектно-ориентированного проектирования и чистого и твердого кода