Установка источника данных в arquillian
Итак, у меня есть проект, который использует файл persistence.xml в основном, он находится в src/main/resources/META-INF
Теперь я хочу использовать базу данных в памяти (H2) при написании автоматизированного модульного теста, поэтому мне нужен другой файл persistence.xml, он у меня есть в src/test/resouce/META-INF
Итак, мой вопрос: как я могу преодолеть первое упорство,
Я также использую shrikwrap resolver для разрешения всех зависимостей из pom.xml, так что он разрешает все и я добавляю его в shrikwrap для возврата WebArchive, есть ли какой-то способ, я пробовал много таких, как создание профиля или фильтрацию maven, но не работает с Arquillian по мере того как я разрешаю все и добавляю к развертыванию.
Вы можете найти мое развертывание Arquillian ниже:
WebArchive[] file = Maven.resolver().loadPomFromFile("pom.xml")
.resolve("G:A:V").withTransitivity().as(WebArchive.class);
WebArchive war = ShrinkWrap.create(WebArchive.class, "test.war")
.addAsResource("META-INF/persistence.xml")
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
war.addAsLibraries(file);
return war;
2 ответа
У вас есть как минимум два варианта здесь.
- Создайте его прямо в коде, используя
StringAsset
-addAsResource(new StringAsset("<xml content>"), "META-INF/persistence.xml")
- Держите файл h2 под другим именем, например
h2-test-persistence.xml
, вsrc/test/resources/
и добавить его, используяaddAsResource("h2-test-persistence.xml", "META-INF/persistence.xml")
Вы пытались добавить новый ресурс после addAsLibrary(file)
?
WebArchive war = ShrinkWrap.create(WebArchive.class, "test.war")
.addAsLibraries(file)
.addAsResource("META-INF/persistence.xml")
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");