Сохранить объект в отладке, а затем использовать его в качестве заглушки в тестах - PullRequest
5 голосов
/ 26 ноября 2009

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

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

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

Ответы [ 3 ]

2 голосов
/ 27 ноября 2009

Я делаю люблю твою идею, это круто!

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

1 голос
/ 27 ноября 2009

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

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

0 голосов
/ 26 ноября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...