【发布时间】:2017-08-15 18:52:08
【问题描述】:
在我们的应用程序中,我们有“镜像表”——一对几乎相同的表,我们需要测试应用程序的逻辑,以便以正确的方式处理镜像表中的写入。看来我们只能在数据库级别对其进行测试——我们想检查方法的工作结果是否正确地写入了数据库。我们认为我们可以在@BeforeClass 方法中开始外部事务,对测试用例中创建和关闭的嵌套事务进行一些更改,因此在每个测试用例中,我们将在数据库中加载相同的基本数据集,并经过测试进行一些操作如果我们只回滚嵌套事务。当然,在 @AfterClass 方法中结束外部事务而不将其标记为干净,因此更改不会出现在应用程序的数据库中。
似乎无法实现,因为 Android 不正确支持嵌套事务 - 请参阅 this answer。
也许有办法在不影响数据库的情况下测试这种行为?还是有一些嵌套事务的解决方法?
谢谢!
【问题讨论】:
-
Android 的数据库框架支持嵌套就好了。您没有正确阅读其他答案。
-
嵌套事务没有像我们预期的那样回滚。我已经测试过了。也许我错过了什么......
-
当任何(外部或嵌套)事务不成功时,整个事务将回滚。这有什么问题?
-
我们想回滚到保存点,我的意思是。并且Android的数据库框架不允许ROLLBACK TO操作,当我们尝试执行该操作时会抛出异常
标签: android sqlite junit transactions