【发布时间】:2012-03-01 19:05:48
【问题描述】:
我有一个类使用 ThreadPoolTaskExecutor 来分离与数据库交互的任务。我对任务的集成测试失败了,我认为是因为它们依赖于通过 DataSourceTransactionManager 插入的测试数据,并且衍生线程没有看到主类中的事务,因此没有从数据库中检索任何内容。有什么方法可以让线程看到插入的测试数据,而无需提交事务并稍后删除测试数据?
【问题讨论】:
-
将测试数据插入测试数据库是一种非常常见的模式,测试结束时会在
finally块中清除该数据库。你为什么担心这个? -
如果线程不修改数据库中的数据,您可以将其事务的隔离级别设置为READ_UNCOMMITTED。
-
@ninjalj 你有一个例子来说明如何做到这一点,最好是通过 Spring XML 配置? Google 一无所获。
-
哎呀,没关系 - JDBC 不支持 READ_UNCOMMITTED。我会接受@Gray 的建议。
-
我已将我的评论提升为答案。谢谢。
标签: database multithreading spring integration-testing