首页 文章

使用Arquillian测试Spring REST服务 - ClassNotFoundException JspServlet

提问于
浏览
0

我正在尝试为使用Spring编写的REST服务 Build 一个简单的Arquillian测试 . 这是我的SpringBoot应用程序:

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

和控制器:

@RestController
public class TestController {
    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public ResponseEntity test() {
        return ResponseEntity.status(HttpStatus.OK).body("Hello world");
    }
}

然后我想测试它运行Arquillian测试:

@RunWith(Arquillian.class)
public class TestControllerTest {
    @Deployment(testable = false)
    public static WebArchive createDeployment() {
        File[] files = Maven.resolver()
                .loadPomFromFile("pom.xml")
                .importRuntimeDependencies()
                .resolve().withTransitivity()
                .asFile();
        return ShrinkWrap.create(WebArchive.class)
                .addPackage(pl.fuv.Application.class.getPackage())
                .addPackage(TestController.class.getPackage())
                .addAsLibraries(files);
    }

    @Test
    @RunAsClient
    public void callRest(@ArquillianResteasyResource final WebTarget webTarget) {
        Response response = webTarget.path("/test").request().get();
        String result = response.readEntity(String.class);
        assertEquals("Hello world", result);
    }
}

部署期间,我得到运行时异常:

SEVERE:Web应用程序中的Servlet [jsp] [/ 0a1cee74-c798-46af-9402-474168676ae6]在org.apache.catalina.loader中抛出了load()异常java.lang.ClassNotFoundException:org.apache.jasper.servlet.JspServlet .appappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1291)位于org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:544)at at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:525)org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150)org.apache.catalina.core.StandardWrapper.loadServlet( StandardWrapper.java:1050)org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:989)org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4931)atg.apache.catalina组织中的.core.StandardContext.startInternal(StandardContext.java:5241) .apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)org.apache.catalina.core.ContainerBase.addChild(ContainerBase) .java:728)在org.apache.catalina,org.apache . startup.HostConfig $ DeployWar.run(HostConfig.java:1857)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:1149)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748) )

和Arquillian获得404 HTTP响应调用服务:

org.junit.ComparisonFailure:预期:Hello world实际:HTTP状态404 - 未找到(...)

我的猜测是我以错误的方式构建部署工件,缺少某些东西,但我找不到任何可能出错的信息 .

1 回答

  • 0

    您需要在jasper上添加依赖项:

    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>jasper</artifactId>
        <version>6.0.32</version>
    </dependency>
    

相关问题