Использование внедрения зависимостей с Apache Commons IO - PullRequest
2 голосов
/ 29 сентября 2011

У меня есть класс 'a', который использует класс FileUtils Apache Commons IO для копирования каталога.

Поскольку мне нужно написать модульный тест для класса 'a', мне нужно иметь возможность внедрить все зависимости, чтобы их высмеивать в тесте.

Но как внедрить класс FileUtils? Нет интерфейса и все методы являются абстрактными.

Ответы [ 3 ]

6 голосов
/ 29 сентября 2011

Все методы служебных классов являются статическими. Вы не можете издеваться над ними (ну, вы можете, с манипулированием байт-кодом, но это некрасиво). Правильный способ справиться с этим - обеспечить абстракцию над этими утилитами. Например, реализуйте FileService, который вы объявляете как bean-компонент, и внедряете его. Тогда вы можете высмеять его методы.

2 голосов
/ 29 сентября 2011

Вы можете создать свою собственную реализацию FileUtils, расширив ее ИЛИ воспользовавшись библиотекой-насмешкой, например jMockit или EasyMock .

1 голос
/ 29 сентября 2011

Вы всегда можете обернуть его в слой обработки файлов и создать реализацию-заглушку для своих модульных тестов.

...