Сохранить объект в отладке, а затем использовать его в качестве заглушки в тестах

StackOverflow https://stackoverflow.com/questions/1802725

Вопрос

Мое приложение подключается к базе данных и получает дерево категорий отсюда. В режиме отладки я вижу этот большой объект дерева, и я только что подумал о возможности сохранить этот объект где-нибудь на диске для использования в тестовых заглушках. Вот так:

mockedDao = mock(MyDao.class);
when(mockedDao.getCategoryTree()).thenReturn(mySavedObject);

Предполагается, что mySavedObject достаточно велико, поэтому я не хочу генерировать его вручную или писать специальный код генерации. Я просто хочу иметь возможность сериализовать и сохранить его где-нибудь во время сеанса отладки, затем десериализовать его и передать в тест thenReturn . Есть ли стандартный способ сделать это? Если нет, то как лучше реализовать такой подход?

Это было полезно?

Решение

Я делаю , люблю твою идею, она классная!

Мне неизвестна библиотека, которая предложила бы эту функцию из коробки. Вы можете попробовать использовать ObjectOutoutStream и ObjectInputStream (то есть стандартную сериализацию Java), если все ваши объекты реализуют Seriablizable . Как правило, они этого не делают. В этом случае вам, возможно, повезет больше, если вы воспользуетесь XStream или одним из его друзей.

Другие советы

Обычно мы высмеиваем всю БД по таким сценариям, повторно используя (и неявно тестируя) код для загрузки категорий из БД.

В частности, наши модульные тесты работают с базой данных в памяти ( hsqldb ) , который мы инициализируем перед каждым запуском теста путем импорта данных теста.

Взгляните на Динамические управляемые бины - это предлагает способ изменить значения запущенного Java-приложение. Может быть, есть способ определить MBean, который содержит ваше дерево, прочитать дерево, сохранить его где-нибудь и вставить его позже.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top