找不到ArquillianServletRunner

找不到ArquillianServletRunner

我还有另一个无法正常工作的Arquillian测试:

@RunWith(Arquillian.class)
public class SomeTest {

private static final String APPLICATION_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
        + "<application xmlns=\"http://java.sun.com/xml/ns/javaee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd\" version=\"6\">"
        + "<display-name>org.acme.project</display-name></application>";

@Deployment
public static Archive<?> createDeployment() {
    EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class);
    ear.setApplicationXML(new StringAsset(APPLICATION_XML));
    ear.addAsModules(Testable.archiveToTest(ShrinkWrap.create(WebArchive.class)));
    return ear;
}

@Test
@Transactional
public void test() throws Exception {
    System.out.println("SomeTest.test()");
}

}


该类用于处理以下异常:

java.lang.IllegalArgumentException: ArquillianServletRunner not found. Could not determine ContextRoot from ProtocolMetadata, please contact DeployableContainer developer.
at org.jboss.arquillian.protocol.servlet.ServletUtil.determineBaseURI(ServletUtil.java:64)
at org.jboss.arquillian.protocol.servlet.ServletURIHandler.locateTestServlet(ServletURIHandler.java:60)
at org.jboss.arquillian.protocol.servlet.ServletMethodExecutor.invoke(ServletMethodExecutor.java:84)
at org.jboss.arquillian.container.test.impl.execution.RemoteTestExecuter.execute(RemoteTestExecuter.java:109)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
....


我还看到了其他问题(例如this one),但所有问题似乎都在使用Glassfish,而我使用的是托管的Wildfly 8.1。

但是,由于slf4j已爬入我的依赖项列表,因此我尝试了其他版本(1.5.10、1.6.6、1.7.13)。

像往常一样,在服务器日志中(或任何地方)没有迹象表明出了什么问题,只有(Eclipse和Maven的)JUnit运行器抱怨。使用其他部署的测试运行良好。

怎么了?

最佳答案

对于每个有同样问题的人。它是这样工作的(请参阅注释以了解更改):

private static final String APPLICATION_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
        + "<application xmlns=\"http://java.sun.com/xml/ns/javaee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd\" version=\"6\">"            + "<display-name>org.acme.project</display-name>"
        // the WAR must be added to the application.xml !
        + "<module><web><web-uri>test.war</web-uri><context-root>/test</context-root></web></module>"
        + "</application>";

@Deployment
public static Archive<?> createDeployment() {
    EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class);
    ear.setApplicationXML(new StringAsset(APPLICATION_XML));

    // to add the WAR to the application.xml, it must have a name
    WebArchive webArchive = ShrinkWrap.create(WebArchive.class, "test.war");
    // the test class must be added manually for whatever reason
    webArchive.addClass(SomeTest.class);
    ear.addAsModules(Testable.archiveToTest(webArchive));
    return ear;
}

关于java - 找不到ArquillianServletRunner,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34606253/

10-12 05:28