3

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

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

我该如何解决?

4

2 回答 2

2

所以我不知道这个的确切原因,但有一个简单的解决方法。

发生的事情是没有映射到名称“ArquillianServletRunner”的 servlet。这似乎由网络片段处理: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

我的解决方案是将上面文件中的 web 片段的内容复制到我包含在通过 ShrinkWrap 创建的 WebArchive 中的 web.xml 文件中。这样,servlet“ArquillianServletRunner”就被配置并可用了。

于 2014-08-25T04:47:57.773 回答
1

如果您已经在 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。修复您的依赖项,然后重试。

于 2018-11-27T13:02:01.183 回答