junit测试时,使用AbstractTransactionalSpringContextTests,默认的是不自动提交,当setComplete()时,才提交数据库。
为什么我测试事,没有调用setComplete(),它也自动提交到数据库呢,而不自动回滚呢?
另一个问题是:当我测试addOrg()方法时,其他方法也自动执行了,不知为什么?
亟待高手解疑……
private OrgService orgService;
@Override
protected String[] getConfigLocations() {
return new String[]{"beans.xml"};
}
//public void setOrgService()
//……
@Test
public void testAddOrg() {
for(int i=0;i<5;i++){
Orgnization org=new Orgnization();
String orgName="父机构"+(i+1);
String orgSn="000000"+(i+1);
org.setName(orgName);
org.setSn(orgSn);
org.setDescription("sdfjksladjf");
orgService.addOrg(org, 0);
for(int j=0;j<10;j++){
Orgnization org2=new Orgnization();
org2.setName("["+orgName+"]下的子机构"+(j+1));
org2.setSn(orgSn+"_0000"+(j+1));
org2.setDescription("sdfjksladjf666");
orgService.addOrg(org2, org.getId());
}
}
}
beans.xml部分如下:
<aop:config>
<aop:pointcut id="servicePointcut" expression="execution(* com.csdn..*.*(..))"/><!--测试类包含在内-->
<aop:advisor id="serviceAdvisor" pointcut-ref="servicePointcut" advice-ref="serviceAdvice"/>
</aop:config>
<tx:advice id="serviceAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="find*" read-only="true"/>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
为什么我测试事,没有调用setComplete(),它也自动提交到数据库呢,而不自动回滚呢?
另一个问题是:当我测试addOrg()方法时,其他方法也自动执行了,不知为什么?
亟待高手解疑……
private OrgService orgService;
@Override
protected String[] getConfigLocations() {
return new String[]{"beans.xml"};
}
//public void setOrgService()
//……
@Test
public void testAddOrg() {
for(int i=0;i<5;i++){
Orgnization org=new Orgnization();
String orgName="父机构"+(i+1);
String orgSn="000000"+(i+1);
org.setName(orgName);
org.setSn(orgSn);
org.setDescription("sdfjksladjf");
orgService.addOrg(org, 0);
for(int j=0;j<10;j++){
Orgnization org2=new Orgnization();
org2.setName("["+orgName+"]下的子机构"+(j+1));
org2.setSn(orgSn+"_0000"+(j+1));
org2.setDescription("sdfjksladjf666");
orgService.addOrg(org2, org.getId());
}
}
}
beans.xml部分如下:
<aop:config>
<aop:pointcut id="servicePointcut" expression="execution(* com.csdn..*.*(..))"/><!--测试类包含在内-->
<aop:advisor id="serviceAdvisor" pointcut-ref="servicePointcut" advice-ref="serviceAdvice"/>
</aop:config>
<tx:advice id="serviceAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="find*" read-only="true"/>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货