ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

springboot实战原理分析笔记(十七)-spring boot测试步骤

2019-07-16 12:38:01  阅读:223  来源: 互联网

标签:springboot spring void 测试步骤 class book andExpect public MockMvcResultMatchers


spring boot测试步骤
1.直接在测试类上面加2个注解

@RunWith(SpringRunner.class)
@SpringBootTest(classes = UserDao.class)

只在测试环境下有效的 @TestConfiguration

springboot会有限加载测试环境的配置文件,测试环境没有才会加载正式环境
设置配置还可以通过一下方法:
1.

@SpringBootTest(classes = App.class, properties = {"springboot.version=1.0.0"})
@Autowired
    private ConfigurableApplicationContext configurableApplicationContext;

    @org.junit.Before
    public void before(){
        EnvironmentTestUtils.addEnvironment(configurableApplicationContext, "aaa=aaaw");
    }

//只有接口的没有实现方法,可以通过一下方法预测

@RunWith(SpringRunner.class)
public class UserMapperTest {

    @MockBean
    private UserMapper userMapper;


    @Before
    public void init(){
        //通过这个可以预测
        BDDMockito.given(userMapper.createUser("name")).willReturn(Integer.valueOf(1));
        BDDMockito.given(userMapper.createUser("")).willReturn(Integer.valueOf(0));
        BDDMockito.given(userMapper.createUser(null)).willThrow(new NullPointerException());
    }

    @Test(expected = NullPointerException.class)
    public void testEnv(){
        Assert.assertEquals( Integer.valueOf(1),userMapper.createUser("name"));
        Assert.assertEquals( Integer.valueOf(0),userMapper.createUser(""));
        Assert.assertEquals( new NullPointerException(),userMapper.createUser(null));
    }
}

测试controller: TestRestTemplate 需要运行在web环境中
第一种方法:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = App.class, webEnvironment=SpringBootTest.WebEnvironment.DEFINED_PORT)
public class BookControllerTest { 


    @Autowired
    private TestRestTemplate testRestTemplate;
    @Test
    public void testHome() throws Exception {
        String forObject = testRestTemplate.getForObject("/book/home", String.class);
        Assert.assertEquals("book home", forObject);
    }


    @Test
    public void testShow() throws Exception {
        String forObject = testRestTemplate.getForObject("/book/show?id=1", String.class);
        Assert.assertEquals("book1", forObject);
    }
} 

@WebMvcTest(controllers = BookController.class) 不需要运行在web环境下,但是需要制定controllers,表示需要测试那些controllers
这种方式只测试controller,controller里面的一些依赖,需要自己去mock
@WebMvcTest不加载整个spring容器
第二种方法():

@RunWith(SpringRunner.class)
@WebMvcTest(controllers = BookController.class )
@ContextConfiguration(classes = App.class)
public class BookControllerTest2 {

    @Autowired
    private MockMvc mvc;

    @Test
    public void testHome() throws Exception {
        mvc.perform(MockMvcRequestBuilders.get("/book/home")).andExpect(MockMvcResultMatchers.status().isOk());
        mvc.perform(MockMvcRequestBuilders.get("/book/home")).andExpect(MockMvcResultMatchers.status().isOk()).andExpect(MockMvcResultMatchers.content().string("book home"));    }


    @Test
    public void testShow() throws Exception {
        mvc.perform(MockMvcRequestBuilders.get("/book/show").param("id","123")).andExpect(MockMvcResultMatchers.status().isOk()).andExpect(MockMvcResultMatchers.content().string("book123"));

    }
} 

@WebMvcTest不能和@SpringBootTest一起使用,需要加载整个spring容器,使用下面的方式
如果需要使用MockMvc对象,加上@AutoConfigureMockMvc注解

@RunWith(SpringRunner.class)
@SpringBootTest(classes = App.class)
@AutoConfigureMockMvc
public class BookControllerTest2 {

    @Autowired
    private MockMvc mvc;

    @Test
    public void testHome() throws Exception {
        mvc.perform(MockMvcRequestBuilders.get("/book/home")).andExpect(MockMvcResultMatchers.status().isOk());
        mvc.perform(MockMvcRequestBuilders.get("/book/home")).andExpect(MockMvcResultMatchers.status().isOk()).andExpect(MockMvcResultMatchers.content().string("book home"));    }


    @Test
    public void testShow() throws Exception {
        mvc.perform(MockMvcRequestBuilders.get("/book/show").param("id","123")).andExpect(MockMvcResultMatchers.status().isOk()).andExpect(MockMvcResultMatchers.content().string("book123"));

    }
} 	

标签:springboot,spring,void,测试步骤,class,book,andExpect,public,MockMvcResultMatchers
来源: https://blog.csdn.net/fsdf8sad7/article/details/96000529

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有