Мы пытаемся исправить некоторые проблемы на тестовом жгуте, и у нас возникают проблемы с конкретным тестом, который в основном тестирует функцию, которая создает сущность, выполняет некоторую обработку и сохраняет ее в базе данных (да, C в CRUD) .
В разделе tearDown теста fitnesse мы выполняем оператор удаления для этой записи. Однако ничего не удаляется.
Мы подозреваем, что это может быть потому, что tearDown выполняется до того, как SUT
совершит свою транзакцию. Следовательно, нечего удалять.
Чтобы попытаться это исправить, мы делаем удаляемое jdbc:
java.sql.Statement statement;
/*creates a statement*/
do{
recordsDeleted = statement.executeUpdate("delete...");
Thread.sleep(INTERVAL);
}while(recordsDeleted == 0);
Итак, возникает вопрос:
- Когда совершается транзакция jdbc?
В приведенном выше коде будут ли обновления выполняться для одной и той же транзакции или будет создаваться новая транзакция для каждой итерации цикла do-while? (Я склонен думать, что они будут выполняться в одной транзакции, поскольку java.sql.Connection
содержит методы commit
, rollback
, etc
).
- Можете ли вы предложить другое решение этой проблемы? Я бы подумал, что это довольно распространенное явление, но мои товарищи по команде не нашли никакого решения в Интернете, только предложение «опросить до удаления или тайм-аут».
Заранее спасибо