zoukankan      html  css  js  c++  java
  • Spring项目使用Junit4测试配置

    我们经常要写junit测试,在不启动整个web项目的情况下,测试自己的service实现或者是dao实现,我们来充分利用下junit4的强大功能。

    1.junit4的测试类

    import java.util.ArrayList;
    import java.util.List;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.annotation.Rollback;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import com.founder.mrp.domain.webservice.ErpProductXml;
    import com.founder.mrp.domain.webservice.ErpTypeSetInfoXml;
    import com.founder.mrp.service.webservice.ErpTypeSetProductService;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = {"classpath:spring-*.xml"})
    public class JunitWebservice {
        @Autowired
        ErpTypeSetProductService erpTypeSetProductService;
            
        @Test
        @Rollback(false)
        public void TestErpTypeSetInfoXml(){
            List<ErpTypeSetInfoXml> erpTypeSetInfoXmlList = new ArrayList<ErpTypeSetInfoXml>();
            ErpTypeSetInfoXml erpTypeSetInfoXml = new ErpTypeSetInfoXml();        
            erpTypeSetInfoXml.setAUFNR("1000021571");
            erpTypeSetInfoXml.setZ_EDT_2000("ty00001");
            erpTypeSetInfoXml.setZ_EDT_2002("试试书");
            erpTypeSetInfoXml.setZ_EDT_2003("t00001");
            erpTypeSetInfoXml.setZ_EDT_2008("1");
            ErpTypeSetInfoXml erpTypeSetInfoXml2 = new ErpTypeSetInfoXml();
            erpTypeSetInfoXml2.setAUFNR("1000021582");
            erpTypeSetInfoXml2.setZ_EDT_2000("ty00002");
            erpTypeSetInfoXml2.setZ_EDT_2002("测试计划");
            erpTypeSetInfoXml2.setZ_EDT_2003("t00002");
            erpTypeSetInfoXml2.setZ_EDT_2008("1");
            erpTypeSetInfoXmlList.add(erpTypeSetInfoXml);
            erpTypeSetInfoXmlList.add(erpTypeSetInfoXml2);
            erpTypeSetProductService.saveTypeSetInfo(erpTypeSetInfoXmlList);
        }
        
        @Test
        @Rollback(false)
        public void TestErpProductXml(){
            List<ErpProductXml>  erpProductXmlList = new ArrayList<ErpProductXml>();
            ErpProductXml erpProductXml = new ErpProductXml();
            erpProductXml.setAUFNR("5000022550");
            erpProductXml.setZ_EDT_2000("pr00001");
            erpProductXml.setZ_EDT_2001("神射手");
            erpProductXml.setZ_PUB_5928("测试印刷厂");
            erpProductXml.setZ_EDT_2003("p00001");
            erpProductXml.setZ_PUB_5008("100");
            ErpProductXml erpProductXml2 = new ErpProductXml();
            erpProductXml2.setAUFNR("5000022551");
            erpProductXml2.setZ_EDT_2000("pr00002");
            erpProductXml2.setZ_EDT_2001("水电费科技");
            erpProductXml2.setZ_PUB_5928("测试印刷厂");
            erpProductXml2.setZ_EDT_2003("p00002");
            erpProductXml2.setZ_PUB_5008("100");
            erpProductXmlList.add(erpProductXml);
            erpProductXmlList.add(erpProductXml2);
            erpTypeSetProductService.saveErpProduct(erpProductXmlList);
        }
    
    }

    2.解释常用到的注解

    @RunWith(SpringJUnit4ClassRunner.class)SpringJUnit支持,由此引入Spring-Test框架支持!
    @ContextConfiguration(locations = "classpath:applicationContext.xml") 多个配置文件的话可以用数组表示{“applicationContext.xml”,“applicationContext1.xml”};
    @ContextConfiguration("/spring-context.xml")放在根路径下(即类路径下),然后<import resource="spring-dao.xml" />所有的配置文件和资源文件
    @Transactional这个非常关键,如果不加入这个注解配置,事务控制就会完全失效! 
    @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)这里的事务关联到配置文件中的事务控制器(transactionManager = "transactionManager"),
    同时指定自动回滚(defaultRollback = true)。这样做操作的数据才不会污染数据库! AbstractTransactionalDataSourceSpringContextTests要想构建这一系列的无污染纯绿色事务测试框架就必须找到这个基类!(即所有事务均不生效) @ActiveProfiles(value="dev")配置环境选择
    然后在方法上使用@Test,@RollBack,@Transaction等注解单独修饰
  • 相关阅读:
    高级树,AVL树和红黑树
    递归分治和动态规划
    树的便利
    undefined: balancer.PickOptions 报错
    微服务常用中间件
    golang中间件的实现
    OpenTracing与Jaeger
    selenium中driver.close()与driver.quit()的区别
    20201016_苹果开发者证书申请流程
    20201016_苹果开发者证书申请
  • 原文地址:https://www.cnblogs.com/loong-hon/p/10334063.html
Copyright © 2011-2022 走看看