Controller
@Controller
public class DataSourceService {
@RequestMapping(value = "/bb/aa/{dataSource}", method = RequestMethod.GET)
public void datasource(HttpServletRequest request, HttpServletResponse response,
@PathVariable("dataSource") String dataSource) throws Exception {
String result = "结果为";
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.write(result + dataSource);
out.close();
}
}
测试的基类
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.junit.BeforeClass;
import org.springframework.mock.web.MockServletContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.XmlWebApplicationContext;
import org.springframework.web.servlet.HandlerAdapter;
import org.springframework.web.servlet.HandlerExecutionChain;
import org.springframework.web.servlet.HandlerMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter;
import org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping;
/**
* @ClassName: JUnitActionBase
* @Description: 这里用一句话描述这个类的作用
*
*/
public class JUnitActionBase {
private static HandlerMapping handlerMapping;
private static HandlerAdapter handlerAdapter;
/**
* 读取spring3 MVC配置文件
* @throws UnsupportedEncodingException
*/
@BeforeClass
public static void setUp() throws UnsupportedEncodingException {
if (handlerMapping == null) {
File file = new File(Thread.currentThread().getContextClassLoader().getResource("").getPath());
String separator = File.separator;
String path = URLDecoder.decode(file.getAbsolutePath(), "utf-8").replace("", "").replace("\\", "/");
String[] configs = { "file:" + path + separator + "hy-spring-servlet.xml",
"file:" + path + separator + "hy-spring.xml" };
XmlWebApplicationContext context = new XmlWebApplicationContext();
context.setConfigLocations(configs);
MockServletContext msc = new MockServletContext();
context.setServletContext(msc);
context.refresh();
msc.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, context);
handlerMapping = (HandlerMapping) context.getBean(DefaultAnnotationHandlerMapping.class);
handlerAdapter = (HandlerAdapter) context.getBean(context
.getBeanNamesForType(AnnotationMethodHandlerAdapter.class)[0]);
}
}
/**
* 执行request对象请求的action
*
* @param request
* @param response
* @return
* @throws Exception
*/
public ModelAndView excuteAction(HttpServletRequest request, HttpServletResponse response) throws Exception {
HandlerExecutionChain chain = handlerMapping.getHandler(request);
final ModelAndView model = handlerAdapter.handle(request, response, chain.getHandler());
return model;
}
}
测试类
public class DataSourceServiceTest extends JUnitActionBase {
@Test
public void testJSONDataSourceServiceSQL() throws Exception {
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
request.setRequestURI("/bb/aa/hehe");
request.addParameter("P_RQ", "2011-11-29");
request.setMethod("GET");
// 执行URI对应的action
this.excuteAction(request, response);
String result = response.getContentAsString();
Assert.assertNotNull(result);
}
}