这是我的项目目录结构:
TOPS-WEB
|___
| Java Resources
|___
WebContent
|____
WEB-INF
|____
| web.xml
|____
| lib
| |__
| strutstest-2.1.4.jar
|____
struts
|__
struts-info-config.xml
当我运行测试时,我收到以下错误。这个错误是由行抛出的 testInfo()方法中的setServletConfig(...)。
ERROR [main] org.apache.struts.action.ActionServlet initServlet - The /WEB-INF/web.xml was not found.
ERROR [main] org.apache.struts.action.ActionServlet init - Unable to initialize Struts ActionServlet due to an unexpected exception or error thrown, so marking the servlet as unavailable. Most likely, this is due to an incorrect or missing library dependency.
我的测试班
public class MyTest extends MockStrutsTestCase{
@Override
protected void setUp() throws Exception {
super.setUp();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
public MyTest(String testName){
super(testName);
}
public void testInfo(){
setContextDirectory(new File("TOPS-WEB/WebContent"));
setConfigFile(this.getSession().getServletContext().getRealPath("/WEB-INF/struts/struts-info-config.xml"));
*setServletConfigFile(this.getSession().getServletContext().getRealPath("/WEB-INF/web.xml"));*
setRequestPathInfo("/infoPopup");
actionPerform();
}
}
我看到有些地方提到你必须使用maven,但我不是。我只需右键单击测试类并将其作为junit运行。这可能是原因吗?
答案 0 :(得分:2)
您的问题是您正在将上下文目录(使用setContextDirectory
)设置为不存在的路径。
new File(string)
,当string
是相对路径名时,将解析为相对于当前工作目录的路径名。那么,您假设当前工作目录是Tomcat放置其爆炸WAR文件的父目录。
打印此:
System.out.println(System.getProperty("user.dir"))
您将获得该进程的当前工作目录。然后,相应地调整setContextDirectory
。