美文网首页
spring集成测试环境的搭建

spring集成测试环境的搭建

作者: dancer4code | 来源:发表于2019-09-28 21:53 被阅读0次

    1.加入依赖包

    使用Spring的测试框架需要加入以下依赖包:

    • JUnit 4 (官方下载:http://www.junit.org/

    • Spring Test (Spring框架中的test包)

    • Spring 相关其他依赖包(不再赘述了,就是context等包)

    2. 创建测试源目录和包

    创建一个和src下面与main同级创建test目录(测试目录),基本上大的框架(像spring的测试文件就是这样的,这已经是默认的了)。

    3. 创建测试类

    创建一个测试用的类,推荐名称为 “被测试类名称 + Test”。 创建测试类通常的两种方式:

    1. 根据需求继承必须的类

    2. 根据需求加上必须的注解

    第一种方式:测试类应该继承与 AbstractJUnit4SpringContextTests 或 AbstractTransactionalJUnit4SpringContextTests

    • AbstractJUnit4springcontextTests (测试中不涉及事物)

    • AbstractTransactionalJUnit4SpringContextTests (测试类中,需要用到事务管理)(比如要在测试结果出来之后回滚测试内容)

    第二种方式:使用注解

    • AbstractJUnit4springcontextTests可以用@RunWith(SpringJUnit4ClassRunner.class)来实现同样的功能

    • AbstractTransactionalJUnit4SpringContextTests 可以用@RunWith(SpringJUnit4ClassRunner.class)+@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)来实现同样的功能

    4. 通过JUnit 4 执行或maven自动执行

    • Junit:右键方法名,选择则“Run As”→“JUnit Test”即可

    • maven:默认自动回执行测试类,如果想要跳过测试可以添加如下命令:-Dmaven.test.skip=true

    5.测试代码解释(测试Controller层)

    code

    @Transactional//每次都开启一个事务
    @WebAppConfiguration//测试环境使用,用来表示测试环境使用的ApplicationContext将是WebApplicationContext类型的;
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = {"classpath*:spring-*.xml"})
    @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
    public class BaseSpringJUnit {
        //执行@Test标注的方法之前都执行这个方法
        @Before
        public void setUp() throws Exception {
            //to doing somthing 
        }
        //执行@Test标注的方法之之后都执行这个方法
        @After
        public void tearDown() throws Exception {
            //to doing somthing
        }
        //测试方法
        @Test
        public void testPrint(){
            //to doing somthing
        }
    }
    

    @Transactional:每次都开启一个事务

    @WebAppConfiguration:测试环境使用,用来表示测试环境使用的ApplicationContext将是WebApplicationContext类型的;

    @ContextConfiguration(locations = {"classpath:spring-.xml"}):Spring整合JUnit4测试时,使用注解引入多个配置文件

    @RunWith(SpringJUnit4ClassRunner.class)和@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)上面已经过

    其中:

    mockMvc.perform(post("/a/pro/unit/list").param("name", "s")).andExpect(MockMvcResultMatchers.view().name("modules/pro/unitList")) 
    .andExpect(MockMvcResultMatchers.model().attributeExists("page")) 
    .andExpect(MockMvcResultMatchers.jsonPath("$.code").value("10000")) 
    .andDo(MockMvcResultHandlers.print()) 
    .andReturn();
    

    其中使用MockMvcResultMatchers.jsonPath("$.code").value("10000"),需要导入jar包

    pom.xml配置需要加上

     <dependency>
                <groupId>com.jayway.jsonpath</groupId>
                <artifactId>json-path</artifactId>
                <version>0.8.1</version>
                <scope>test</scope>
            </dependency>
          <dependency>
                <groupId>com.jayway.jsonpath</groupId>
                <artifactId>json-path-assert</artifactId>
                <version>0.8.1</version>
                <scope>test</scope>
        </dependency>
    

    最后整个过程:

    • 1、mockMvc.perform执行一个请求;

    • 2、MockMvcRequestBuilders.get("/user/1")构造一个请求

    • 3、ResultActions.andExpect添加执行完成后的断言

    • 4、ResultActions.andDo添加一个结果处理器,表示要对结果做点什么事情,比如此处使用MockMvcResultHandlers.print()输出整个响应结果信息。

    • 5、ResultActions.andReturn表示执行完成后返回相应的结果。

    相关文章

      网友评论

          本文标题:spring集成测试环境的搭建

          本文链接:https://www.haomeiwen.com/subject/tjcluctx.html