我正在尝试使用Arquillian和Tomcat 7嵌入式创建测试套件,但是当我使用web.xml文件部署WAR文件时,我收到以下错误。
未找到ArquillianServletRunner。无法确定ContextRoot 从ProtocolMetadata,请联系DeployableContainer开发人员。
我该如何解决这个问题?
答案 0 :(得分:2)
所以我不知道确切原因,但有一个简单的解决方法。
发生的事情是没有servlet映射到名称" ArquillianServletRunner"。这似乎是由网络片段处理的:http://grepcode.com/file/repository.jboss.org/nexus/content/repositories/releases/org.jboss.arquillian.protocol/arquillian-protocol-servlet/1.0.0.Beta1/org/jboss/arquillian/protocol/servlet/v_3/web-fragment.xml
我的解决方案是将上面文件中的网络片段的内容复制到我在通过ShrinkWrap创建的WebArchive中包含的web.xml文件中。那样的servlet" ArquillianServletRunner"已配置并可用。
答案 1 :(得分:0)
如果您已在web.xml中包含以下片段,则最有可能与jar依赖项有关。
<servlet>
<servlet-name>ArquillianServletRunner</servlet-name>
<servlet-class>org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ArquillianServletRunner</servlet-name>
<url-pattern>/ArquillianServletRunner</url-pattern>
</servlet-mapping>
首先,您可以检查ArquillianServlet是否正在发送如下所示的GET请求
http://localhost:8080/APP_CONTEXT_ROOT/ArquillianServletRunner?outputMode=serializedObject&className=com.stackoverflow.test.SampleTest&methodName=testSomething
此外,您还可以查看服务器日志,并可以看到NoClassDefFoundError。修复依赖性,然后重试。