Start Tomcat 8 with Arquillian in JUnit
I am trying to run integration tests for my web application. So I want to start Tomcat 8 from JUnit Test.
@RunWith(Arquillian.class)
public class ServiceTest {
@ArquillianResource
private URL baseURL;
/**
* Define the deployment
*/
@Deployment(testable=false)
public static WebArchive createTestArchive() {
File[] files = Maven.configureResolver().workOffline()
.loadPomFromFile("pom.xml")
.resolve("org.glassfish.jersey.containers:jersey-container-servlet-core",
"org.jboss.weld.servlet:weld-servlet",
"org.glassfish.jersey.containers.glassfish:jersey-gf-cdi")
.withTransitivity()
.asFile();
WebArchive webArchive = ShrinkWrap
.create(WebArchive.class, "api.war")
.addClass(de.example.service.servlet.ServletContextInitalizer.class)
.addClass(de.example.service.rest.PolygonService.class)
...
.addAsLibraries(files);
return webArchive;
}
My pom.xml file can be found here . I see that my ServletContextListener implementation is being called correctly, but after loading the Listener, I get a ClassCastException:
java.lang.ClassCastException: org.glassfish.jersey.server.filter.internal. ServerFiltersAutoDiscoverable cannot be cast to org.glassfish.jersey.internal.spi.AutoDiscoverable
at org.glassfish.jersey.model.internal.CommonConfig.configureAutoDiscoverableProviders( CommonConfig.java:583)
at org.glassfish.jersey.server.ResourceConfig.configureAutoDiscoverableProviders( ResourceConfig.java:791)
at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:381)
at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:162)
at org.glassfish.jersey.server.ApplicationHandler$3.run(ApplicationHandler.java:322)
at org.glassfish.jersey.internal.Errors$2.call(Errors.java:289)
at org.glassfish.jersey.internal.Errors$2.call(Errors.java:286)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:286)
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:319)
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:284)
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:311)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:168)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:358)
at javax.servlet.GenericServlet.init(GenericServlet.java:244)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1241)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1044)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4922)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5204)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:724)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:697)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:919)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1704)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Any help is kindly appreciated!
Cheers, Daniel
+3
source to share
No one has answered this question yet
Check out similar questions: