springboot启动类位置

controller如下

@RestController
public class HelloWorldController {
    @RequestMapping("/hello")
    public String hello(String name){
       return name;
    }
 }

使用springbootTest测试代码如下:

//配置事务的回滚,对数据库的增删改都会回滚,便于测试用例的循环利用
@Rollback(value = true)
@SpringBootTest
public class HelloTest {
    private static final Logger logger = LoggerFactory.getLogger(HelloTest.class);
    private MockMvc mockMvc;
    @Before //这个方法在每个方法执行之前都会执行一遍
    public void setup(){
        logger.info("test before");
        mockMvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
    }
    @Test
    public void getHello() throws Exception {
        logger.info("hello test");
        mockMvc.perform(MockMvcRequestBuilders.get("/hello") //请求的url,请求的方法是get
                .contentType(MediaType.APPLICATION_JSON)//数据传输格式
                .param("name","judy"))
                .andExpect(status().isOk())//期望返回的状态码是200
                .andDo(print()) //打印出请求和相应的内容
                .andReturn().getResponse().getContentAsString();//将返回内容转换为字符串
    }
} 

测试时发现,直接在浏览器输入网址会报错:

This application has no explicit mapping for /error, so you are seeing this as a fallback.

但是使用SpringbootTest测试就可以运行
原因是Application启动类的位置不对.要将Application启动类放在最外侧。
原因:spring-boot会自动加载启动类所在包下及其子包下的所有组件.

你可能感兴趣的:(spring,boot)