所有,我对struts2动作单元测试感到困惑
import org.apache.struts2.StrutsSpringTestCase;
import org.junit.Test;
import com.opensymphony.xwork2.ActionProxy;
public class TestLoginAction extends StrutsSpringTestCase {
@Test
public void testCheck() throws Exception {
ActionProxy proxy = null;
LoginAction test = null;
request.setParameter("username", "admin");
proxy = getActionProxy("/checkLogin");
test = (LoginAction) proxy.getAction();
String result = proxy.execute();
assertEquals("error", result);
assertEquals("admin", test.getUsername());
}
}
它抛出警告和例外:
无法获取类路径资源的资源路径[WEB-INF / jsp /] java.io.FileNotFoundException:类路径资源[WEB-INF / jsp /]无法解析为URL,因为它不存在
答案 0 :(得分:1)
发现抛出异常的原因, 我使用struts-convention来查找我的动作类,但是 ,这个配置是jsp文件的基本搜索路径,所以当然约定不能将路径识别为java类路径,我将在这里提供两个解决方法:
您可以将配置值“/ WEB-INF / jsp”修改为现有的类路径,例如“com.foo.bar”,以使约定顺利解析类路径
重写MockServletContext并吞下抛出异常 public Set getResourcePaths(String path){ .... }
答案 1 :(得分:1)
StrutsSpringTestCase期望从classpath:applicationContext.xml加载Spring配置。您可以通过将此行为添加到测试操作来覆盖此行为:
@Override
public String getContextLocations() {
return "path/to/your/TestLoginAction-context.xml";
}
答案 2 :(得分:0)
您可以在struts.xml中添加如下一行来解决它。
<constant name="struts.convention.result.path" value="/your/path" />