我在创建Arquillian测试时遇到问题,该测试在执行结束时回滚数据库操作.它NullPointerException在尝试回滚事务时会抛出一个,因为它无法org.jboss.arquillian.test.spi.TestResult从org.jboss.arquillian.test.impl.context.TestContextImpl实例中找到实例(testResultInstance.get()在下面返回null).
我正在使用arquillian-1.1.2-Final和arquillian-transaction-api-1.0.0-FINAL和testng-6.8.
我可以看到在测试方法开始时正确创建了事务,但我无法弄清楚为什么org.jboss.arquillian.test.spi.TestResult没有正确设置并抛出异常.
注意:如果我@Transactional从测试类中删除注释,一切正常.此外,在此测试中,您将看到数据库没有更新/插入,但这只是为了简单起见.如果我向其添加更新语句,则记录会正确更新,但更改会在测试结束后保留(如果我@Transactional从测试类中删除注释)并且我想通过回滚来阻止它...
异常发生的代码(以下方法的第一行 - 来自org.jboss.arquillian.transaction.impl.lifecycle.TransactionHandler):
/**
* Returns whether the test requires to be rolled back. </p>
* By default it will return true if the last executed test has failed.
*
* @return true if test requires rollback, false otherwise
*/
private boolean testRequiresRollbackDueToFailure()
{
final Status actualStatus = testResultInstance.get().getStatus();
return TestResult.Status.FAILED.equals(actualStatus);
}
Run Code Online (Sandbox Code Playgroud)
异常堆栈跟踪:
java.lang.NullPointerException
at org.jboss.arquillian.transaction.impl.lifecycle.TransactionHandler.testRequiresRollbackDueToFailure(TransactionHandler.java:159)
at …Run Code Online (Sandbox Code Playgroud)