无法获取类路径资源的资源路径

时间:2011-10-12 02:44:19

标签: java unit-testing struts2 action

所有,我对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,因为它不存在

3 个答案:

答案 0 :(得分:1)

发现抛出异常的原因, 我使用struts-convention来查找我的动作类,但是  ,这个配置是jsp文件的基本搜索路径,所以当然约定不能将路径识别为java类路径,我将在这里提供两个解决方法:

  1. 您可以将配置值“/ WEB-INF / jsp”修改为现有的类路径,例如“com.foo.bar”,以使约定顺利解析类路径

  2. 重写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" />