我有一个使用myfaces和primefaces的相当小的JSF 2应用程序。它被设置为Eclipse中的tomcat 7服务并且工作正常,包括ajax和工作。
但是,我想对它进行单元测试,因此我将Tomcat 7添加为测试依赖项并创建相应的启动代码。
// create tomcat
Tomcat tomcat = new Tomcat();
tomcat.setPort(HTTP_PORT);
// add "web" as a webapp, all classes that are in the current classpath (all in eclipse) are available
Context ctx = tomcat.addWebapp("/" + CONTEXT_PREFIX, new File("src/main/webapp").getAbsolutePath());
// start the server (but do not wait)
tomcat.start();
这也正确启动,但未加载托管bean。因此即使页面看起来很好,也没有行为。这个问题似乎与这个Jetty博客类似,讨论Jetty如何仅在特定位置搜索托管bean。
http://musingsofaprogrammingaddict.blogspot.com.au/2009/12/running-jsf-2-on-embedded-jetty.html
Eclipse中用于Tomcat服务器的Web部署程序集将所有类文件放在WEB-INF / classes中,因此可能存在问题。
嵌入式Tomcat 7是否可以使用addWebapp(为了对web.xml进行单元测试),但是将WEB-INF / classes重定向到正确的目录?