最近,我们开始将项目从Java 6迁移到Java 8.这带来了一系列更新,其中包括从glassfish 3.1.2.2
迁移到glassfish 4.1
,JEE6
到JEE7
等。
然而,在我们使用arquillian完成测试的过程之后,需要将数据插入数据库的那些测试停止了工作。更具体的测试如下:
@Test
@UsingDataSet("table.json")
public void getLastEntryTest() throws NoResultFoundException {
assertCorrectness(tableDAO.getLastEntry());
}
在运行时抛出
java.lang.NullPointerException
at org.jboss.arquillian.transaction.impl.lifecycle.TransactionHandler.testRequiresRollbackDueToFailure(TransactionHandler.java:170)
我们使用的相关依赖项:
<groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId>
<version>1.1.8.Final</version>
<groupId>org.jboss.arquillian.container</groupId>
<artifactId>arquillian-glassfish-remote-3.1</artifactId>
<version>1.0.0.CR4</version>
<groupId>org.jboss.arquillian.extension</groupId>
<artifactId>arquillian-persistence-dbunit</artifactId>
<version>1.0.0.Alpha7</version>
<groupId>org.jboss.arquillian.junit</groupId>
<artifactId>arquillian-junit-container</artifactId>
<version>1.1.8.Final</version>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
示例table.json:
{ "schema.table":
[
{
"date": "2005-09-19 00:00:00",
"foo": "value"
}
]
}
数据库连接(到Oracle数据库)正常工作 - 如果我们通过在测试体内执行查询来手动执行insterts,则一切都符合预期。
我们如何让它发挥作用?