Интеграционные тесты 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.

Запустить конфигурацию

Другие вопросы по тегам