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>