0
我在DAO層方法,其調用存儲在Oracle數據庫的過程:在java測試中調用存儲過程之後可以回滾嗎?
@Override
public void deleteNode(Integer nodeId) {
SqlParameterSource in = new MapSqlParameterSource()
.addValue("nodeId",nodeId)
.addValue("user", "DUMMY");
SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(ebDataSource)
.withSchemaName("SCHEMA")
.withCatalogName("PK_GRAPH_DML")
.withProcedureName("DeleteNode");
simpleJdbcCall.execute(in);
}
我不得不測試此方法。但是我想在每次執行此測試後回滾所有更改。
@Test
@Transactional
@Rollback
public void deleteEBNode_ok() {
Integer nodeId = 5714;
ebFlowService.deleteEBNode(nodeId.toString());
EBFlowToolSelect nodeModelFromDatabase = ebFlowService.getNodeById(nodeId);
Assert.assertNull(nodeModelFromDatabase.getNodeId());
}
我試圖通過@Transactional
和@Rollback
註釋我的測試,但它並沒有幫助。
是否有可能使我的測試回滾存儲過程所做的所有更改?
這取決於存儲過程。如果它管理自己的事務,那麼你可以做的事情不多,否則它應該參與一個事務,並且測試方法上的'@ Transactional'應該是你所需要的。 –