·快速构建SpringBoot项目
http://blog.didispace.com/spring-boot-learning-1/
注意1:在项目入口类上添加扫描controller的注解,格式为:
@ComponentScan("包名1,包名2...")
注意2:当启动项目的时候,看到端口被占用:
可以进行修改application.properties文件:
#server.port=8080
server.port=8081
注意3:MockMvc的作用:
对模块进行集成测试时,希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦,比如,启动速度慢,测试验证不方便,依赖网络环境等,这样会导致测试无法进行,为了可以对Controller通过引入MockMVC进行解决。
MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,这样可以使得测试速度快、不依赖网络环境,而且提供了一套验证的工具,这样可以使得请求的验证统一而且很方便。
测试实例:
package com.springBoot.study.day01;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import com.springBoot.study.controller.HelloController;
@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration
public class Day01ApplicationTests {
private Log logger = LogFactory.getLog(Day01ApplicationTests.class);
private MockMvc mock;
@Test
public void contextLoads() {
}
@Before
public void setUp() throws Exception {
mock = MockMvcBuilders.standaloneSetup(new HelloController()).build();
}
@Test
public void getHello() throws Exception{
logger.info("start moment");
mock.perform(MockMvcRequestBuilders.get("/hello/index").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())//注意引用
.andExpect(content().string(equalTo("hello Spring!")));///注意引用
}
}