Java 如何使用HttpUnit servlet runner运行servlet测试?使用ServletUnit启动时出现的问题?
我计划通过ServletUnit对我的Servlet进行单元测试,但遇到了一些问题:Java 如何使用HttpUnit servlet runner运行servlet测试?使用ServletUnit启动时出现的问题?,java,http-unit,Java,Http Unit,我计划通过ServletUnit对我的Servlet进行单元测试,但遇到了一些问题: -作为起点,我们应该创建一个ServletRunner对象。其中一个构造函数希望文件对象包含web.xml文件。我提供了web.xml文件的完整路径,但不知何故它忽略了提供的路径,并在顶级文件夹中搜索。代码段和错误消息如下所示: 代码片段 ServletRunner sr = new ServletRunner(new File("* C:/eclipse-workspaces/pocs/lms-csd
-作为起点,我们应该创建一个ServletRunner对象。其中一个构造函数希望文件对象包含web.xml文件。我提供了web.xml文件的完整路径,但不知何故它忽略了提供的路径,并在顶级文件夹中搜索。代码段和错误消息如下所示: 代码片段
ServletRunner sr = new ServletRunner(new File("* C:/eclipse-workspaces/pocs/lms-csd/src/main/webapp/WEB-INF/web.xml*"));
ServletUnitClient sc = sr.newClient();
WebRequest request = new PostMethodWebRequest("path to be specified" ); request.setParameter( "userId", "test" );
request.setParameter( "password", "csd" );
WebResponse response = sc.getResponse(request);
String text = response.getText();
Assert.assertTrue(text.contains(“欢迎离开管理系统”)
堆栈跟踪
com.meterware.httpunit.HttpInternalErrorException:
Error on HTTP request: 500 org.apache.jasper.JasperException: java.io.FileNotFoundException: * C:\eclipse-workspaces\pocs\lms-csd\WEB-INF\web.xml*
(The system cannot find the path specified)
[http://localhost/login]-为什么系统一直在查看文件夹结构是…/WEB-INF/WEB.xml。
我的是一个maven项目,我不想改变项目的结构以适应这种方式。如何使ServletRunner类从指定文件夹读取在Servlet代码中,
我使用以下代码:
String result = null if (someCondition) result = "/welcome.jsp"; } else { logger.warn("Password Validation failed"); request.setAttribute("failedlogin", new Boolean(true)); result = "/index.jsp"; } } RequestDispatcher requestDispatcher = getServletContext().getRequestDispatcher(result); requestDispatcher.forward(request, response);
同样,ServletUnit希望welcome.jsp位于根文件夹,尽管jsp文件位于…/src/main/webapp/folder。同样,如何告知ServletUnit目标文件夹位置
非常感谢
致意
苏里南先生我就是这样做的。这是我的servlet测试的基类的复制品。在本例中,我传递web.xml文件在源代码树中的相对路径。我从ant和eclipse运行这些测试
abstract public class ServletTestCase {
protected ServletRunner m_runner;
protected ServletUnitClient m_client;
protected String m_userAgent = "something/1.0";
@Override
protected void setUp() throws Exception {
super.setUp();
initHttpUnit();
}
@Override
protected void tearDown() throws Exception {
shutdownHttpUnit();
super.tearDown();
}
protected void initHttpUnit() throws IOException, SAXException {
shutdownHttpUnit();
// We are expecting UTF-8 character handling in URLs, make it the default
HttpUnitOptions.setDefaultCharacterSet("UTF-8");
// Find the servlet's web.xml file and use it to init servletunit
File file = new File("tests/web.xml"));
m_runner = new ServletRunner(file);
m_client = m_runner.newClient();
m_client.getClientProperties().setUserAgent(m_userAgent);
}
protected void shutdownHttpUnit() {
if (m_runner != null) {
m_runner.shutDown();
}
m_client = null;
m_runner = null;
}
}