使用springmvc 做开发时,需要对controller做测试,而有时候界面的设计比后台功能性的开发速度还要慢,又想测试controller 的正确性时,就可以用上这种方法。
下面是一个 junit case
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/applicationContext.xml","file:src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml","file:src/main/webapp/WEB-INF/datasource/datasource.xml"}) //使用注解加载spring的相关配置
public class TestEmailController {
private MockHttpServletRequest request; //模拟request
private MockHttpServletResponse response; //模拟response
@Autowired
private EmailController ec; //这里要注入controller 就是你调试要执行的controller
@Before //做初始化的工作
public void setUp(){
request = new MockHttpServletRequest();
request.setCharacterEncoding("UTF-8");
response = new MockHttpServletResponse();
}
@Test
public void emailDetail() { //用test标签可以分开测试不同的 controller
try {
assertEquals("data_indox_details",ec.emailDetail(41, request, response)) ;
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void emailContent(){
try{
assertEquals("data_indox_details_tail",ec.emailContent(3, request, response)) ;
}catch (Exception e) {
e.printStackTrace();
}
}
}
另外,在@Test标签可以做异常测试,比如
@Test(enabled=true,expectedExceptions = NullPointerException.class) //这里预期抛出空指针异常
在@Test注解中可以做超时测试。如果运行时间超过指定的毫秒数,就测试失败,这对于测试网络链接类十分重要
@Test(timeOut=10)