【发布时间】:2014-04-11 23:59:30
【问题描述】:
我已经看到@Transactional 更好地放置在服务层,但问题是我无法正确测试我的存储库,因为未提交更改。
在测试存储库save() 方法时,我想使用find() 来查看实体是否正确保存,但由于save() 更改未提交到数据库,find() 返回 null。
我看到的唯一解决方案是添加@Transactional 注释:
- 在存储库上
save()方法 - 在
testSave()方法上 => 但 IMO 这是错误的,因为它会修改行为
可能是我理解错了,前两天开始学Java的。
【问题讨论】:
-
“因为没有提交修改”没看懂
-
更改未提交到数据库
-
我还是没听懂你。要测试功能,可以编写一个Junit测试用例[@RunWith(SpringJUnit4ClassRunner.class)],并在@Transactional处标记[默认回滚为真]。
-
@user3168219 您是否希望在测试结束时回滚更改?还是您使用最后被清理的基于内存的数据库?或者您打算如何删除提交的条目?另请注意,这是集成测试,而不是单元测试。你最好把两者分开。
-
我使用不同的配置进行生产和测试,实际上我使用 H2 数据库进行测试。
标签: java spring spring-data