Интеграционные тесты Arquillian и расширение OpenJPA
Я работаю над набором интеграционных тестов с использованием arquillian и dbunit. Я могу нормально выполнять некоторые из моих тестов, но не те, которые связаны с объектами, которые имеют oneToMany
отношения с данными в них. При выполнении моих тестов я получаю исключение PersistenceException:
Caused by: java.lang.NullPointerException
at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.setInverseRelation(JDBCStoreManager.java:451)
Мой тест выглядит так:
@RunWith(Arquillian.class)
@CreateSchema("sql/masterplanCreateTables.sql")
public class MasterPlanManagerBeanDbIT {
@Rule
public PersistenceUnitRule rule = new PersistenceUnitRule();
@Inject
private MasterplanManager instance;
@PersistenceContext
EntityManager entityManager;
@Deployment
public static WebArchive createDeployment() throws Exception {
return ShrinkWrap
.create(WebArchive.class, .....
}
@Test
@UsingDataSet("/data/integration/uttrans/masterplan/validData_dbInput.xml")
public void updateTrip_givenValidInput_expectsTripToBeUpdated() {
Trip input = givenTrips().get(0);
input.setNote("updated value");
Trip updated = instance.updateTrip(input);
checkEquality(input, updated);//checks field by field for equality
}
}
мой pom.xml
выглядит так:
...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId>
<version>1.0.1.Final</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
...
<dependencies>
<dependency>
<groupId>org.jboss.arquillian.junit</groupId>
<artifactId>arquillian-junit-container</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>arquillian-tomee-embedded</artifactId>
<version>${tomee.version}</version>
<scope>test</scope>
</dependency>
...
</dependencies>
...
Я попробовал openjpa-maven-plugin
для улучшения сущностей во время сборки, но это на самом деле изменит скомпилированные сущности, которые позже будут развернуты в нашей производственной среде (с использованием расширения времени развертывания).
Имея это в виду, возможно ли включить улучшение времени развертывания в моих тестах на arquillian?
2 ответа
Поскольку я использую openJpa, я нашел эту ссылку очень полезной:
http://openejb.apache.org/javaagent.html
Я просто предоставляю java-агент openejb плагину maven surefire.
Если вы используете eclipse, добавьте -javaagent:{ваш путь агента java} к аргументам виртуальной машины для теста.
В моем случае я взял java-агент непосредственно из установки TomEE.