诸神的博客
诸神
我的首页
文章
相册
圈子
留言
管理
 
    当前所在页面:首页>>文章>>AbstractJpaTests事务提交的问题
AbstractJpaTests事务提交的问题
    作者:stef_wu 来源: 发表时间:2007-12-29

 
 

最近在使用AbstractJpaTests的时候,出现了一个比较奇怪的问题:
代码清单1:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/appContext.xml" })
@TransactionConfiguration(defaultRollback = true)
public class AdvancedGroupServiceImplTest extends AbstractJpaTests {

 private IAdvancedGroupService agService;

 public final void setAgService(IAdvancedGroupService agService) {
  this.agService = agService;
 }

 /**
  * 测试创建一个Group对象,不提供任何父组对象,也不提供创建者对象
  */
 public void testNormalCrateGroupWithNoParentAndNoUser() {
  init();
  Group g = new Group();
  g.setName("group1");
  this.agService.createGroup(null, g, null, false, false);
  assertNotNull(g.getId());
  Group g2 = this.groupService.getGroup(g.getId());
  assertNotNull(g2);
  assertEquals("group1", g2.getName());
  assertEquals(UserContext.getTanent(), g2.getTanent());
 }
}
在这个测试用例中,我创建了一个Group对象,并保存,完成测试后,事务自动回滚。该测试列运行情况正常。

下面另一个测试列:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/appContext.xml" })
@TransactionConfiguration(defaultRollback = true)
public class GlobalsMethodsFactoryTest extends JpaDaoTest {

 private IGlobalsMethodsFactory gmFactory;

 public final void setGmFactory(IGlobalsMethodsFactory gmFactory) {
  this.gmFactory = gmFactory;
 }

 public void testIsSystemAdministrator() {
  init();
  User user = new User();
  user.setUserName("user");
  user.setPassword("user");

  Permission p = new Permission();
  p.setName(StaticResource.ROLE_ADMINISTRATOR);
  this.pService.createPermission(null, p, null);
  this.uService.addPermission2User(null, p, user);
  assertTrue(this.gmFactory.isSystemAdministrator(user));
 }
}
在这个测试列中,gmFactory.isSystemAdministrator(User)方法会执行一次数据库查询,而就是这个查询,我估计将之前所有保存的事务点全部提交了,虽然测试通过了,但是测试的数据却提交到了数据库,这个是不能忍受的。
在javaeye里面找到了相同的疑问,但都没有看到回复。最后还是在spring的论坛上找到了答案,原来很简单,把表设置成innoDB类型就OK了。

 
 

(阅读 )   评论数(:7)
评论】 【收藏】
评论:共7条
纯顶^_^!
评论人: 天一     评论时间: 2007-12-29 13:51:10
That's a crackerjack awsner to an interesting question
评论人: DfxXeYfrpShEuQik     评论时间: 2013-03-01 00:12:38
uEOkWS , [url=http://nfhehfknpcnu.com/]nfhehfknpcnu[/url], [link=http://wqxnyquperlp.com/]wqxnyquperlp[/link], http://kfssvltzrecb.com/
评论人: LSYHgNQCQxWIzfBNVe     评论时间: 2013-03-03 10:41:33
vJHQQ4  <a href="http://agmyfezcbpcv.com/">agmyfezcbpcv</a>
评论人: UnCNohgYnOK     评论时间: 2013-03-04 20:41:33
xUxfS9 , [url=http://numgnnqldwqy.com/]numgnnqldwqy[/url], [link=http://brkhdmhjccbf.com/]brkhdmhjccbf[/link], http://rsqywiuhwvqg.com/
评论人: hyahbtdLtIEFn     评论时间: 2013-03-06 11:42:41
wh0cd2451909 <a href=http://costofviagra2017.com/>cost of viagra</a>
评论人: BrettfrinI     评论时间: 2017-05-09 03:36:52
wh0cd853249 <a href=http://buyzetia.us.org/>Buy Zetia</a>
评论人: BrettfrinI     评论时间: 2017-07-08 06:41:02

发表评论:
发表人:
评论: 
验证码:
请输入前面图中的四位验证码,字母不区分大小写
  
 
关于我们 | 诚聘英才 | 联系我们 | 广告业务 | 网站地图 | 法律声明

EasyJF开源团队版权所有  建议使用1024*768分辨率