springboot-测试类

添加POM文件

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

一、测试Controller

//本篇是用来测试Controller接口
@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration
public class SpringbootTestController {

	@Autowired
	private WebApplicationContext webApplicationContext;
	private MockMvc mockMvc;

	@Before
	public void setUp() throws Exception{
		//从WebApplicationContext里面获取相应的控制器并得到相应的MockMvc;
		mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
	}

	/**
	 * 1、mockMvc.perform执行一个请求。
	 * 2、MockMvcRequestBuilders.get("XXX")构造一个请求。
	 * 3、ResultActions.param添加请求传值
	 * 4、ResultActions.accept(MediaType.TEXT_HTML_VALUE))设置返回类型
	 * 5、ResultActions.andExpect添加执行完成后的断言。
	 * 6、ResultActions.andDo添加一个结果处理器,表示要对结果做点什么事情
	 *   比如此处使用MockMvcResultHandlers.print()输出整个响应结果信息。
	 * 5、ResultActions.andReturn表示执行完成后返回相应的结果。
	 */
	@Test
	public void getHello() throws Exception{
		MvcResult mvcResult= mockMvc.perform(MockMvcRequestBuilders.get("/hello")
				.param("name","lvgang")
				.accept(MediaType.TEXT_HTML_VALUE))
				// .andExpect(MockMvcResultMatchers.status().isOk())             //等同于Assert.assertEquals(200,status);
				// .andExpect(MockMvcResultMatchers.content().string("hello lvgang"))    //等同于 Assert.assertEquals("hello lvgang",content);
				.andDo(MockMvcResultHandlers.print())
				.andReturn();
		int status=mvcResult.getResponse().getStatus();                 //得到返回代码
		String content=mvcResult.getResponse().getContentAsString();    //得到返回结果

		Assert.assertEquals(200,status);                        //断言,判断返回代码是否正确
		Assert.assertEquals("hello lvgang",content);            //断言,判断返回的值是否正确
	}

/*
在上面的测试类中,我们用到了这么一个类MockMvcRequestBuilders用来构建请求的,此类有以下主要的API:

MockHttpServletRequestBuilder get(String urlTemplate, Object... urlVariables):根据uri模板和uri变量值得到一个GET请求方式的MockHttpServletRequestBuilder;如get(/user/{id}, 1L);
MockHttpServletRequestBuilder post(String urlTemplate, Object... urlVariables):同get类似,但是是POST方法;
MockHttpServletRequestBuilder put(String urlTemplate, Object... urlVariables):同get类似,但是是PUT方法;
MockHttpServletRequestBuilder delete(String urlTemplate, Object... urlVariables) :同get类似,但是是DELETE方法;
MockHttpServletRequestBuilder options(String urlTemplate, Object... urlVariables):同get类似,但是是OPTIONS方法;
MockHttpServletRequestBuilder request(HttpMethod httpMethod, String urlTemplate, Object... urlVariables): 提供自己的Http请求方法及uri模板和uri变量,如上API都是委托给这个API;
MockMultipartHttpServletRequestBuilder fileUpload(String urlTemplate, Object... urlVariables):提供文件上传方式的请求,得到MockMultipartHttpServletRequestBuilder;
RequestBuilder asyncDispatch(final MvcResult mvcResult):创建一个从启动异步处理的请求的MvcResult进行异步分派的RequestBuilder;
http://t.zoukankan.com/jimmyshan-study-p-10975684.html
*/
}
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class SpringbootTestController2 {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void helloTest() {

        MvcResult mvcResult = null;
        try {
            mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/hello")
                    .accept(MediaType.TEXT_HTML_VALUE)
                    .param("name", "hello"))
                    .andExpect(MockMvcResultMatchers.status().isOk())
                    .andDo(MockMvcResultHandlers.print())
                    .andReturn();
            System.out.println(mvcResult.getResponse().getContentAsString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

二、测试Service

/**
 * 本篇是用来测试Service里面的方法
 * @author jiangleilei
 * @date 2022/6/21 10:55 下午
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootTestService {
    @Autowired
    private UserService userService;

    //测试Service
    @Test
    public void testService() {
        PageInfo<UserDomain> allUser = userService.findAllUser(1, 10);
        System.out.println(allUser);
    }
}

三、测试Mapper

/**
 * 本篇是用来测试Mapper接口
 * @author jiangleilei
 * @date 2022/6/22 10:09 上午
 */
@SpringBootTest
@RunWith(SpringRunner.class)
public class SpringBootTestMapper {


    @Autowired
    private UserDao userDao;

    @Test
    public void testDao(){
        List<UserDomain> userDomains = userDao.selectUsers();
        System.out.println(userDomains);
    }
}

四、测试Configuration

/**
 * 本篇是用来测试ContextConfiguration注解
 * @author jiangleilei
 * @date 2022/6/22 10:13 上午
 */
@RunWith(SpringRunner.class)
@ContextConfiguration(classes= ConfigTest.class)  //classes属性只能放被@Configration修饰的注解
public class SpringBootTestConfig {
    //@ContextConfiguration(locations="../applicationContext.xml")  也可以指定配置文件
    //@ContextConfiguration(classes = SimpleConfiguration.class)   指定带了@Configration注解的类
    //@ContextConfiguration(locations = { "classpath*:/spring1.xml", "classpath*:/spring2.xml" })  指定多配置文件
    @Autowired
    private TestBean testBean;

    @Test
    public void xx(){
        testBean.xx();
    }
}
@Configuration
public class ConfigTest {

    @Bean
    public TestBean getTestBean(){
        return new TestBean();
    }
}

五、测试classes

/**
 * 本篇是测试@SpringBootTest注解的属性class
 * @author jiangleilei
 * @date 2022/6/22 10:18 上午
 */
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Springboot2MybatisDemoApplication.class)
public class SpringBootTestClass {
    @Autowired
    private UserService userService;
    @Test
    public void xx(){
        PageInfo<UserDomain> allUser = userService.findAllUser(1, 1);
        System.out.println(allUser);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信仰_273993243

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值