Предложения для Файла Насмешки Java (для насмешки java.io. Файл)

У кого-либо есть предложения для объекта Файла насмешки Java? Я использую сторонний класс, который должен получить java.io. Объект файла как аргумент. Я получаю данные для этого файла в потоке по веб-сервису (также один из их продуктов).

Одно решение состоит в том, чтобы записать все эти данные в файл и предложить это классу. Это - решение, которое я не люблю: это устраняет преимущество использования веб-сервиса в земельном участке просто загрузки файла.

Более быстрый и более эффективный должен был бы поместить эти данные из памяти в Ложный Файл и предложить этот Ложный Файл стороннему классу.

Это должен был бы, вероятно, быть MockFile, расширяющий java.io. Файл и переопределяющий все функции, которые делают фактическое взаимодействие через интерфейс с файлом на жестком диске.

Я знаю, что третье лицо должно было использовать поток в качестве входного параметра в земельном участке файла. Однако это вне моего влияния.

10
задан Péter Török 30 June 2010 в 10:12
поделиться

2 ответа

Это просто предложение, основанное на моем понимании вашего вопроса. Я полагаю, что вы, должно быть, делаете что-то вроде этого,

public void doSomething(){
      //Pre processing
       Object result=new ThirdPartyCode().actualMethod(file);
     //Post processing
}

Mock-объекты имеют больше смысла с точки зрения модульного тестирования. Ваша цель - не модульное тестирование функции сторонней библиотеки, а модульное тестирование метода doSomething(). Поэтому, вероятно, вы можете создать обертку вокруг сторонней функции. Возможно, что-то вроде этого,

public class Wrapper implements MyWrapper{

   public Object invokeThirdPartyFunction(File file){
      new ThirdPartyCode().actualMethod(file);
   }
}

Теперь вы можете создать обертку-макет (реализующую тот же интерфейс) и использовать эту обертку-макет для всех ваших junit-кейсов.

5
ответ дан 4 December 2019 в 02:25
поделиться

Запрашивает ли тестируемый класс только имя, атрибуты и т. Д. Фиктивного файла или он действительно пытается открыть файл?

В первом случае вы можете легко создать свой макет, используя например EasyMock или эквивалентный макет фреймворка.

Последний случай более сложен, и я боюсь, что если входной поток создается внутри класса, у вас нет другого выбора, кроме как создать настоящий тестовый файл на HD.

2
ответ дан 4 December 2019 в 02:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: