📄 loginservlettest.java
字号:
package org.riawork.demo.web.servlet.test;
/*
* RIAWork.org
*
* OSGI Opendoc Demo
*/
import java.io.IOException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import junit.framework.TestCase;
import org.easymock.MockControl;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.riawork.demo.service.user.Validator;
import org.riawork.demo.web.servlet.LoginServlet;
/**
* desc: 测试登录响应Servlet
*
* @author jerry
*/
public class LoginServletTest extends TestCase {
private StringBuffer resultBuf=new StringBuffer();
/**
* 测试登录成功时
*
* @throws Exception
*/
public void testDoPostWhenLoginSuccess() throws Exception{
resultBuf=new StringBuffer();
mockTest("jerry","bluedavy",true,false);
assertEquals(true,resultBuf.toString().indexOf("Login success")!=-1);
}
/**
* 测试登录失败时
*
* @throws Exception
*/
public void testDoPostWhenLoginFail() throws Exception{
resultBuf=new StringBuffer();
mockTest("jerry","",false,false);
assertEquals(true,resultBuf.toString().indexOf("Login Fail")!=-1);
}
/**
* 测试登录错误时
*
* @throws Exception
*/
public void testDoPostWhenLoginError() throws Exception{
resultBuf=new StringBuffer();
mockTest("jerry","error",false,true);
assertEquals(true,resultBuf.toString().indexOf("Login error")!=-1);
}
/*
* Mock测试类的依赖
*/
private void mockTest(String username,String password,boolean loginResult,boolean loginError) throws Exception{
// Mock HTTP
MockControl mc=MockControl.createControl(HttpServletRequest.class);
HttpServletRequest request=(HttpServletRequest)mc.getMock();
request.getParameter("username");
mc.setReturnValue(username);
request.getParameter("userpass");
mc.setReturnValue(password);
mc.replay();
MockControl responseMC=MockControl.createControl(HttpServletResponse.class);
HttpServletResponse response=(HttpServletResponse)responseMC.getMock();
response.getOutputStream();
responseMC.setReturnValue(new MockServletOutputStream());
response.setContentType("text/html");
responseMC.setVoidCallable(1);
responseMC.replay();
// Mock HTTP
// Mock ValidatorService 在采用Declarative Services后不需要Mock Service的获取部分
MockControl validatorMC=MockControl.createControl(Validator.class);
Validator validator=(Validator)validatorMC.getMock();
validator.validate(username, password);
if(loginError)
validatorMC.setDefaultThrowable(new Exception());
else
validatorMC.setReturnValue(loginResult);
validatorMC.replay();
MockControl serviceRefMC=MockControl.createControl(ServiceReference.class);
ServiceReference serviceRef=(ServiceReference)serviceRefMC.getMock();
MockControl bcMC=MockControl.createControl(BundleContext.class);
BundleContext bc=(BundleContext)bcMC.getMock();
bc.getServiceReference(Validator.class.getName());
bcMC.setReturnValue(serviceRef);
bc.getService(serviceRef);
bcMC.setReturnValue(validator);
bcMC.replay();
// Mock ValidatorService
LoginServlet servlet=new LoginServlet(bc);
servlet.doPost(request, response);
}
class MockServletOutputStream extends ServletOutputStream{
public void write(int b) throws IOException {
}
public void println(String msg){
resultBuf.append(msg);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -