"ArquillianServletRunner не найден" с Tomcat 7 Embedded

Я пытаюсь создать набор тестов со встроенными Arquillian и Tomcat 7, но при развертывании моего файла WAR с файлом web.xml я получаю следующую ошибку.

ArquillianServletRunner не найден. Не удалось определить ContextRoot из ProtocolMetadata, обратитесь к разработчику DeployableContainer.

Как это исправить?

2 ответа

Решение

Так что я не знаю точной причины этого, но есть простой обходной путь.

Происходит то, что не существует сервлета, сопоставленного с именем "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

Мое решение состояло в том, чтобы просто скопировать содержимое веб-фрагмента из файла выше в файл web.xml, который я включал в веб-архив, создаваемый с помощью ShrinkWrap. Таким образом, сервлет "ArquillianServletRunner" был настроен и доступен.

Если вы уже включили приведенный ниже фрагмент в файл 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.stackru.test.SampleTest&methodName=testSomething

Кроме того, вы также можете заглянуть в журнал сервера и увидеть NoClassDefFoundError. Исправьте свои зависимости, затем попробуйте снова.

Другие вопросы по тегам