现在TestLoginAction 是这样:
import servletunit.struts.*;
public class TestLoginAction extends MockStrutsTestCase {
public TestLoginAction( String testName ){ super( testName ); }
public void testSuccessfulLogin() {
setRequestPathInfo( "/login" );
addRequestParameter( "username", "deryl" );
addRequestParameter( "password", "radar" );
actionPerform();
verifyForward( "success" );
assertEquals("deryl",(String) getSession().getAttribute("authentication"));
verifyNoActionErrors();
}
}
写ant,编译运行一下看看测试结果
为了让 ant 支持 junit 任务,应把 junit.jar 复制到<ANT_HOME>的lib 下
<project name="strutstest" default="test" basedir=".">
<property name="src.home" value="${basedir}/src"/>
<property name="classes.home" value="${basedir}/war/WEB-INF/classes"/>
<property name="lib.home" value="${basedir}/war/WEB-INF/lib"/>
<target name="compile">
<javac srcdir="${src.home}" destdir="${classes.home}" debug="on">
<classpath>
<fileset dir="${lib.home}">
<include name="*.jar"/>
</fileset>
</classpath>
</javac>
</target>
<target name="test" depends="compile">
<junit printsummary="yes">
<classpath>
<pathelement location="${classes.home}"/>
<fileset dir="${lib.home}">
<include name="*.jar"/>
</fileset>
</classpath>
<formatter type="plain"/>
<test name="TestLoginAction"/>
</junit>
</target>
</project>
运行后可以看到一切正常,而且在项目的根目录下自动生成 TEST-TestLoginAction.txt,里面写着测试结果,如测试有问题,可在这查看错误信息
正常的情况已经测试通过了,现在来看看错误的情况,写一个testFailedLogin :
public void testFailedLogin() {
//setConfigFile("struts-config.xml");
addRequestParameter( "username", "deryl" );
addRequestParameter( "password", "deryl" );
setRequestPathInfo( "/login" );
actionPerform();
verifyForward( "login" );
verifyActionErrors( new String[]{"error.password.mismatch"} );
}
StrutsTestsCase 的简单使用我们已经看过了,和junit 基本相同,很简单