zoukankan      html  css  js  c++  java
  • springboot测试

    一、单元测试

    在开发阶段的时候最重要的是单元测试了,springboot对单元测试的支持已经很完善了。

    1、在pom包中添加spring-boot-starter-test包引用

    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-test</artifactId>
    	<scope>test</scope>
    </dependency>

    2、开发测试类

    以最简单的helloworld为例,在测试类的类头部需要添加:@RunWith(SpringRunner.class)@SpringBootTest注解,在测试方法的顶端添加@Test即可,最后在方法上点击右键run就可以运行。

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class MailServiceTest {
    
    	@Autowired
    	private MailService mailService;
    
    	@Test
    	public void testSimpleMail() throws Exception {
    		mailService.sendSimpleMail("1249736987@qq.com", "test simple mail", " zmc");
    	}
    
    	@Test
    	public void hello() {
    		System.out.println("hello world,zmc");
    	}
    
    }

    实际使用中,可以按照项目的正常使用去注入dao层代码或者是service层代码进行测试验证,spring-boot-starter-test提供很多基础用法,更难得的是增加了对Controller层测试的支持。

    //简单验证结果集是否正确
    Assert.assertEquals(3, userMapper.getAll().size());
    
    //验证结果集,提示
    Assert.assertTrue("错误,正确的返回值为200", status == 200); 
    Assert.assertFalse("错误,正确的返回值为200", status != 200);  

    引入了MockMvc支持了对Controller层的测试,简单示例如下:

    public class HelloControlerTests {
    
        private MockMvc mvc;
    
        //初始化执行
        @Before
        public void setUp() throws Exception {
            mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();
        }
    
        //验证controller是否正常响应并打印返回结果
        @Test
        public void getHello() throws Exception {
            mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
                    .andExpect(MockMvcResultMatchers.status().isOk())
                    .andDo(MockMvcResultHandlers.print())
                    .andReturn();
        }
        
        //验证controller是否正常响应并判断返回结果是否正确
        @Test
        public void testHello() throws Exception {
            mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
                    .andExpect(status().isOk())
                    .andExpect(content().string(equalTo("Hello World")));
        }
    
    }

    单元测试是验证你代码第一道屏障,要养成每写一部分代码就进行单元测试的习惯,不要等到全部集成后再进行测试,集成后因为更关注整体运行效果,很容易遗漏掉代码底层的bug.

    二、集成测试

    整体开发完成之后进入集成测试,spring boot项目的启动入口在 Application类中,直接运行run方法就可以启动项目,但是在调试的过程中我们肯定需要不断的去调试代码,如果每修改一次代码就需要手动重启一次服务就很麻烦,spring boot非常贴心的给出了热部署的支持,很方便在web项目中调试使用。

    pom需要添加以下的配置:

     <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
    </plugins>
    </build>

    添加以上配置后,项目就支持了热部署,非常方便集成测试。

  • 相关阅读:
    autocomplete
    ORM组件 ELinq (一)首航之旅
    ORM组件 ELinq 系列
    Jet 驱动对CRUD的支持
    ORM组件 ELinq 更新日志
    年度开源力作ORM组件 ELinq诞生了
    Excel 连接字符串详解
    国内开源ORM组件 ELinq正式版发布
    Firebird 问题总结
    ORM组件 ELinq (二) 映射配置之Table
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/9715375.html
Copyright © 2011-2022 走看看