(1)环境设置:导入HttpUnit
(2)开始实践,写一个测试接口,起名为LoginTestInf:
/*
* Created on 2004-12-17
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package org.apollo.test.util;
/**
* @author SixSun
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/**
*测试用例编号 : 0001
*测试用例名称 : HttpUnit 登陆验证测试用例
*测试目标 : 验证用户登陆是否成功
*测试过程 :
*1、输入登陆地址的页面地址,验证该页面是否可被正常访问。
*2、验证被访问的页面是否是登陆页面。
*3、输入非法用户名、密码,验证登陆失败。
*4、输入合法用户名、密码,验证登陆成功。
*/
public interface LoginTestInf {
public void testValidPage() throws Exception;
public void testIsLoginPage() throws Exception;
public void testBadLogin() throws Exception;
public void testGoodLogin() throws Exception;
}
(3)实现一个Junit TestCase 同时 implements LoginTestInf 接口:
/*
* Created on 2004-12-17
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package org.apollo.test.util;
import java.net.URL;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import junit.textui.TestRunner;
import com.meterware.httpunit.WebConversation;
import com.meterware.httpunit.WebRequest;
import com.meterware.httpunit.WebResponse;
import com.meterware.httpunit.WebForm;
import com.meterware.httpunit.GetMethodWebRequest;
import org.apollo.test.util.LoginTestInf;
/**
* @author sixsun
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class LoginTest extends TestCase implements LoginTestInf {
private String username = "suibian";
private String password = "suibian";
private WebConversation browser;
private WebRequest requestIndex;
private WebRequest requestLogin;
private WebResponse responseIndex;
private WebResponse responseLogin;
private String urlSystem = "系统首页网址";
private String urlLogin = "登陆界面网址";
/*
* @see TestCase#setUp()
*/
protected void setUp() throws Exception {
browser = new WebConversation();
requestIndex = new GetMethodWebRequest(urlSystem);
responseIndex = browser.getResponse(requestIndex);
requestLogin = new GetMethodWebRequest(urlLogin);
responseLogin = browser.getResponse(requestLogin);
}
//输入登陆地址的页面地址,验证该页面是否可被正常访问
public void testValidPage() throws Exception{
assertNotNull("zsonline在网络上不存在!",responseIndex);
}
//验证被访问的页面是否是登陆页面
public void testIsLoginPage() throws Exception{
URL currentUrl = responseLogin.getURL();
String currentUrlStr = currentUrl.getProtocol() + "://" +currentUrl.getHost() + currentUrl.getPath();
assertEquals("登陆页面不是zsonline首页!" ,currentUrlStr,urlLogin);
}
//输入非法用户名、密码,验证登陆失败
public void testBadLogin() throws Exception{
WebForm form = responseLogin.getForms()[0];
form.setParameter("username","badname");
form.setParameter("password","badpassword");
requestLogin = form.getRequest();
responseLogin = browser.getResponse(requestLogin);
assertTrue("用户名不存在,请确认用户名输入是否完全正确(区分大小写)!",
responseLogin.getText().indexOf("用户名不存在,请确认用户名输入是否完全正确(区分大小写)!") != -1);
}
//输入合法用户名、密码,验证登陆成功
public void testGoodLogin() throws Exception{
WebForm form = responseLogin.getForms()[0];
form.setParameter("username",username);
form.setParameter("password",password);//此处需要填写真实密码
requestLogin = form.getRequest();
responseLogin = browser.getResponse(requestLogin);
assertTrue("转到'zsonline'【suibian】用户首页失败!",responseLogin.getText().indexOf("用户测试用户_zsonline,您好!") != -1);
}
public static TestSuite suite(){
return new TestSuite(LoginTest.class);
}
public static void main(String args[]){
TestRunner.run(suite());
}
}