2010-06-03 2 views
3

У меня есть проект maven, который преобразует текстовые файлы определенного формата в другой формат. Для тестирования я поставил в src/test/resources большое количество тестовых файлов.Общие тестовые данные для нескольких независимых проектов maven

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

Есть ли общее решение для этого? Я не возражаю , не имея тестового набора данных внутри дерева исходных текстов проектов, если каждый проект может получить доступ к набору данных независимо от другого. Я также не хочу настраивать базу данных для этого. Я думаю что-то вроде репозитория тестовых данных проще, чем РСУБД. Есть ли какое-либо приложение для такого рода потребностей, которое я могу использовать с определенным плагином maven? Простота настройки и простота - мой приоритет. Также я думаю что-то вроде упаковки тестовых данных и размещения его во внутреннем репозитории maven, а затем его загрузки и разархивирования в коде junit. Или лучше, есть ли плагин maven, который может сделать это для меня?

Любые идеи?

ответ

5

Возможно обмен ресурсами с Maven, например, с помощью плагинов Assembly и Dependency. В основном:

  1. Создайте модуль с упаковкой типа pom для хранения общих ресурсов
  2. использовать плагин сборки, чтобы упаковать модуль как почтовый
  3. Объявите зависимость от этого почтового индекса в модулях «потребитель»
  4. И использовать dependency:unpack-dependencies (плюс некоторые правила исключения) для распаковки ZIP

Этот подход подробно описан в How to share resources across projects in Maven. Для этого требуется немного настройки (которая «предоставляется») и не слишком сложна.

3

Просто поместите их в дерево в каталоге src/main/resources отдельного модуля специально для обмена тестовыми данными. Они будут добавлены в файл jar, и я хорошо сжимаю и версию в вашем репозитории nexus, файловом ресурсе, ~/.m2/репозитории или любом другом, что вы используете для хранения/распространения артефактов maven.

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

Вам не нужны никакие специальные плагины или другая инфраструктура. Это просто работает.

+0

Могу ли я это сделать, но без привязки данных теста к ресурсу одного из проектов? Как у проекта, у которого нет java-кода, а только на тестовые данные и использовать его в качестве тестовой зависимости для любого проекта, который хочет протестировать данные теста? – Paralife

+0

Я не думаю, что это хорошее решение, вы НЕ должны связывать «большое количество тестовых файлов» в финальном артефакте. –

+0

Что не является хорошим решением? Объединение большого количества тестовых данных с реальным проектом или, как правило, объединение большого количества тестовых данных в качестве самого проекта («артефакт только для тестовых данных»), который будет использоваться с любым другим проектом в качестве тестовой зависимости? – Paralife

Смежные вопросы