我们正在尝试解决测试工具上的一些问题,并且遇到了特定测试的问题,这些测试基本上测试了创建实体的功能,并进行了一些处理并将其存储在数据库(是的,CRUD中的C)。Fitnesse:测试没有正确地进行清理
在fitnesse测试的tearDown部分,我们在该记录上执行删除语句。但是,没有任何东西被删除。
我们怀疑这可能是因为在SUT
提交其事务之前执行tearDown。因此,没有什么可以删除的。
要尝试和解决这个问题,我们正在一个可轮询的JDBC删除:
java.sql.Statement statement;
/*creates a statement*/
do{
recordsDeleted = statement.executeUpdate("delete...");
Thread.sleep(INTERVAL);
}while(recordsDeleted == 0);
所以问题来了:
- 当一个JDBC事务COMMITED?
在上面的代码中,更新是在同一个事务上执行,还是为每个迭代的do-while循环创建一个新的事务? (我倾向于认为他们将在同一交易中执行,因为java.sql.Connection
持有commit
,rollback
,etc
方法)。
- 你可以为这个问题提出另一种解决方案吗?我认为这很常见,但我的队友并没有在网上找到任何解决方案,只是“轮询直到它被删除或超时”的建议。
在此先感谢