使用Tomcat 7 Embedded时“找不到ArquillianServletRunner”

时间:2014-08-25 04:47:58

标签: embedded-tomcat-7 jboss-arquillian

我正在尝试使用Arquillian和Tomcat 7嵌入式创建测试套件,但是当我使用web.xml文件部署WAR文件时,我收到以下错误。

  

未找到ArquillianServletRunner。无法确定ContextRoot   从ProtocolMetadata,请联系DeployableContainer开发人员。

我该如何解决这个问题?

2 个答案:

答案 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。修复依赖性,然后重试。