Репозиторий JCR доступен для тестов Junit - PullRequest
3 голосов
/ 26 августа 2011

У меня есть код доступа к репозиториям контента через JCR API. Мой код разрабатывается в среде OSGI. Я хочу иметь репозиторий контента JCR, который должен быть доступен во время выполнения модульных тестов независимо от среды. Я имею в виду, что он должен быть доступен для любого пользователя, который создает проект. Я не хочу зависеть от какого-либо внешнего репозитория контента, запущенного на другой виртуальной машине.

Можно ли сделать такую ​​вещь? Заранее спасибо.

Ответы [ 4 ]

3 голосов
/ 31 августа 2011

Вы также можете взглянуть на временный репозиторий, предоставляемый реализацией Jackrabbit.(при условии, что вы используете реализацию Jackrabbit) Временный репозиторий - это

прокси-сервера репозитория, который автоматически инициализирует и закрывает базовый экземпляр репозитория, когда открывается первый сеанс или закрывается последний.- API doc

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

Обычно я создаю временный репозиторий и сеанс один раз для каждого тестового класса JUnit в setUpClass / BeforeClass hook и повторное использованиеэто во всех тестовых случаях, очистка сеанса (например, удаление узлов, которые я добавил во время тестового примера и т. д.) после каждого тестового случая.

Однако один недостаток, использующий временный репозиторий, заключается в том, что онсоздаст несколько специфичных для репозитория файлов / директории в вашей базовой директории.Если вы используете maven, вы можете использовать maven-clean-plugin для очистки ненужных файлов в качестве решения.

2 голосов
/ 27 августа 2011

Класс Apache Sling RepositoryTestBase предоставляет репозиторий, который можно использовать в «модульном» тестировании.У него есть некоторые зависимости Sling, поэтому вы не сможете использовать его как есть, но это, вероятно, хорошая отправная точка.

0 голосов
/ 15 сентября 2011

Используйте TransientRepository с MemoryFileSystem и PM в памяти или диспетчером сохранения базы данных, который может обрабатывать базы данных в памяти, такие как H2 .

0 голосов
/ 29 августа 2011

ModeShape можно легко использовать в модульных тестах, а для модульных тестов наши Разъем In-Memory и Разъем для диска работают отлично и очень быстро (и в памяти не 'не требует очистки после каждого теста).Наш JcrEngineTest показывает, насколько это просто, каждый метод настраивает и запускает экземпляр движка в несколько строк.Многие из этих тестов завершаются менее чем за 100 мс .

...