在开发过程中,若写了一个Service方法,不知该方法是否可以正常运行且结果是否正常。而Service中加入了一些其他的Bean,必须运行Spring容器才能进行运行和测试。此时需要繁琐的骚操作去解决这个问题。比如写一个测试的Controler去通过调用获取等。而Junit正是为了解决这个麻烦的问题而诞生的。
话不多说,进入正题。
================================================================================================
1.首先jar包准备,项目是基于springMVC,没有使用maven。所以通过下载的方式,将jar包加入到项目中。
下载的方法有很多种,此次我是通过IDEA自动下载的。
2.编写单元测试方法.
新建test文件夹,再新建Test class文件。
package test;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
import szsti.gasstation.service.SysConfigService;
/**
* @创建人: Dylan
* @创建时间: 2020/10/9
* @描述
*/
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
// 加载所需要的配置文件
@ContextConfiguration({"classpath:spring/applicationContext-xxxn.xml", "classpath:spring/spring-mvc.xml"})
public class RestServiceTest {
private static final Logger LOGGER = LoggerFactory.getLogger(RestServiceTest.class);
/**
* 没办法自动注入,通过下面的setup方法设置
*/
private MockMvc mockMvc;
/**
* 注入WebApplicationContext,用于生成mockMvc
*/
@Autowired
private WebApplicationContext wac;
/**
* 需要测试的service
*/
@Autowired
private SysConfigService sysConfigService;
@Before
public void setup()
{
// 创建mockMVc
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
LOGGER.info("★★★★★★★★ WebApplicationContext = {}", wac);
}
@Test
public void testService()
{
// 测试Service方法返回
boolean aaa=sysConfigService.getStandApprove();
System.out.println(aaa);
}
@Test
public void testRestAPI()
throws Exception
{
// get请求测试
// MockHttpServletResponse response = mockMvc.perform(get("/test1").param("pageNo", "1").param("pageSize", "5")).andReturn().getResponse();
// LOGGER.info("★★★★★★★★ Response Status = {}", response.getStatus());
// LOGGER.info("★★★★★★★★ ContentType = {}", response.getContentType());
// LOGGER.info("★★★★★★★★ Response Body = {}", response.getContentAsString());
// post请求测试
// response = mockMvc.perform(post("/test2").param("pageNo", "1").param("pageSize", "10")).andReturn().getResponse();
// LOGGER.info("★★★★★★★★ Response Status = {}", response.getStatus());
// LOGGER.info("★★★★★★★★ ContentType = {}", response.getContentType());
// LOGGER.info("★★★★★★★★ Response Body = {}", response.getContentAsString());
}
}
2.验证junit方法是否可以正常运行
测试通过,顺利拿到返回值。