2013-09-06 5 views
1

Я работаю над набором тестов интеграции с использованием arquillian и dbunit. Я могу выполнить некоторые из моих тестов просто отлично, но не те, которые связаны с объектами, которые имеют отношения с данными в них. При выполнении моих тестов я тогда получить PersistenceException:Тесты интеграции Arquillian и расширение OpenJPA

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 для повышения объекты во время сборки, но это изменит скомпилированные объекты, которые позже будут развернуты в нашей производственной среде (с использованием повышения времени развертывания).

Имея это в виду, можно ли включить расширение времени развертывания в мои аркиллианские тесты?

+0

Как о переходе на управляемый/удаленный контейнер? Встраиваемые контейнеры иногда не подходят для повышения времени исполнения, в зависимости от того, на что способен поставщик JPA. –

ответ

1

Как я использую OpenJPA, я нашел эту ссылку очень полезным:

http://openejb.apache.org/javaagent.html

Я просто предоставление OpenEJB Java-агента в Maven плагин верный.

0

Если вы используете eclipse add -javaagent: {ваш путь Java-агента} к аргументам VM для теста.

В моем случае я взял агент java непосредственно из установки TomEE.

Run configuration

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