2014-01-15 6 views
0

У меня есть приложение web maven, у которого есть база данных EJB jar как зависимость.Добавить persistence.xml из зависимостей EJB в arquillian test

База данных EJB - это тот, который имеет все сущности JPA и файл persistence.xml, поэтому он отвечает за все операции с базой данных.

Я только что прочитал http://arquillian.org/guides/testing_java_persistence/ и объясняет, как проверить постоянство, используя arquillian.

В учебнике рассматривается, что файл persistence.xml находится в пути webapp, поэтому он добавляет META-INF/persistence.xml в качестве ресурса.

Так что я хотел бы знать, как я могу добавить persistence.xml базы данных при запуске тестов arquillian из моего webapp? Это возможно?

ответ

0

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

У вас есть два варианта, либо прочитать архив из файла (возможно генерироваться мой МВН пакет) или создать архив самостоятельно, используя Shrinkwrap:

вариант (1), называемый где-то с аннотацией @Deployment:

/** maven did it for us .. we just have to read the file */ 
private static Archive<?> getArchiveFromFile() { 
    JavaArchive artifact = ShrinkWrap.create(ZipImporter.class, ARCHIVE_NAME).importFrom(ARCHIVE_FILE) 
      .as(JavaArchive.class); 

    return artifact; 
} 

вариант (2), я нашел, что это полезно для проверки файла время от времени таким образом есть возможность запишите его в файловую систему:

/** doing it the hard way ... guess you won't like it as EVERY class plus related stuff needs to be specified */ 
private static Archive<?> getArchiveManually() { 
    // creating archive manually 
    JavaArchive artifact = ShrinkWrap.create(JavaArchive.class, ARCHIVE_NAME) 

      .addPackage(FooServiceBean.class.getPackage()).addPackage(Foo.class.getPackage()) 
      .addPackage(FooService.class.getPackage()).addAsResource("META-INF/persistence.xml") 
      .addAsResource("META-INF/beans.xml"); 

    // so we might write it for further inspection 
    if (WRITE_ARCHIVE) { 
     artifact.as(ZipExporter.class).exportTo(new File("D:/abc/xyz/tmp/" + ARCHIVE_NAME), true); 
    } 

    return artifact; 
} 

Таким образом, ваш ответ включен во второй вариант ;-)

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