【问题标题】:SpringBoot Rest Application + ArquillianSpringBoot Rest 应用程序 + Arquillian
【发布时间】:2017-12-03 01:58:43
【问题描述】:

我想测试我的 Rest 应用程序,它使用 SpringBoot 来使用 Arquillian 进行测试,但在线示例都不起作用我无法测试 GET 调用并且在部署到 Jboss EAP-6.4 时遇到困难。谁能指导我如何实现这一目标。任何简单的例子???

【问题讨论】:

  • 我很好奇 - 为什么要在 EAP 中部署 SpringBoot 应用程序?这听起来很奇怪。
  • 我喜欢在 arquillian 支持的 Jboss Container 中执行此操作,顺便说一句,它无法回答我的问题!!!
  • 这就是为什么我要评论这个问题,而不是回答它。我相信这就是 cmets 的用途。我知道它不能回答您的问题,但这似乎是一种错误的方法。因此,也许与其解决“问题”,不如通过使用不同的解决方案来消除它?
  • 我需要将它部署到安装在我公司服务器中的 EAP,我无法指定我的公司使用什么容器。如果它是一个错误的方法,你能告诉我一个有效的例子吗???我相信 jboss 容器会部署战争文件,Arquillian 也可以在 jboss 容器中测试战争文件。如果有错请纠正我。如果可能,请提供一个工作示例...
  • Spring Boot 的整个想法是拥有一个包含整个 Spring 运行时的胖 jar,以便您可以将其作为单个 Java 进程运行。您不会从这个概念或 EAP 提供的东西中受益。从部署的角度来看,这也很有趣,因为您将捆绑了 Servlet 容器的 jar 部署到拥有它自己的 EAP 中。听起来有点像 inception :) 你能实际部署它并进行手动测试吗?

标签: rest spring-boot jboss-arquillian


【解决方案1】:

我认为这里有很多事情要检查,所以我想说 1) 您是否尝试将 Spring Boot 应用程序部署到 EAP 6.4 以检查它是否有效(不使用 Arquillian)? 2)是否可以分享一个简单的github项目以便我们检查?

【讨论】:

  • 我在控制器中有这样的方法:@Autowired 私有服务服务; @RequestMapping(method = RequestMethod.GET, value = "/works") public void get(@PathVariable("Value") String Value) { logger.info("******************" + 服务); // 打印空 logger.info("\n\n^^^^^^^^^^" + service.retrieveAll(Value)); }
  • 如果你能提供给我们一个 github 项目会更好,有了这些信息我不确定会发生什么。
  • 由于公司技术问题,我无法推送代码。当我手动将应用程序部署到 jboss 时,它无需测试即可工作。但是当我尝试使用测试进行部署时,测试失败并且部署失败。
  • 是的,我明白这一点,但也许您可以尝试使用 Hello World 应用程序重现问题?这可能是一个很好的练习,可以查看问题是出在代码上还是在 Arquillan 中
  • 感谢您一直以来的支持。在过去的两天里,我一直为此头疼。正如你提到的,我创建了一个基本项目并将其上传到这里github.com/Vikrammsc/ArquillianSample/tree/ArquillianTest。当我提到这个问题时,你也可以看看自述文件,请帮助我克服这个问题。请让我知道缺少什么和做错了什么,再次感谢您的帮助和支持。
【解决方案2】:

这个链接帮助我解决了这个问题:Adding all Maven dependencies to Arquillian

有效的代码:

@Deployment
public static Archive<?> createTestArchive() {

        File[] files = Maven.resolver()
                        .loadPomFromFile("pom.xml")
                        .importRuntimeDependencies()
                        .resolve().withTransitivity()
                        .asFile(); 

    return ShrinkWrap.create(WebArchive.class, "FileUploadIssue.war")
                     .addPackages(true,"com.example")
                     .addAsLibraries(files); 
}


@Test
@RunAsClient
public void shouldGetFileContents() {

    String result = restTemplate.getForObject(contextPath + "upload/sayhello", String.class);

    System.out.println( "Test : " + result);
}

有没有办法进一步重构这段代码??

【讨论】:

    猜你喜欢
    • 2020-10-04
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    相关资源
    最近更新 更多