【问题标题】:ShrinkWrap UnknownExtensionTypeException during WebArchive creationWebArchive 创建期间的 ShrinkWrap UnknownExtensionTypeException
【发布时间】:2015-01-20 00:08:33
【问题描述】:

我想使用新的 ShrinkWrap 功能 MavenImporter (https://github.com/shrinkwrap/resolver) 创建一个完整的 WebArchive 来运行 Arquillian 测试。

情景:

Arquillian 应该与 SoapUi 集成/扩展以测试 Spring 应用程序。 Spring 应用程序公开了 n 个 Endpoints,并使用 cxf 实现。

测试方法如下:

 /*
 * Source folder for SoapUi project files
 */
@Value("${soapui.workspace}")
private String soapUiWorkspace;



/*
 * Output directory for test reports
 */
@Value("${soapUi.reports.dir}")
private String reportsOutpuDirectory;



/*
 * Comma separated list of SoapUi projects to be tested
 */
@Value("${soapUi.projects}")
private String[] projects;



/*
 * URL resource provided by Arquillian runtime
 */
@ArquillianResource
private URL serverUrl;



@Test
public void testServiceEndpoints() throws Exception {

    final SoapUITestCaseRunner runner = new SoapUITestCaseRunner();



    for (String project : projects) {

        runner.setProjectFile(String.format("%s%s%s", soapUiWorkspace, "/", project));

        runner.setHost(String.format("%s:%s", serverUrl.getHost(), serverUrl.getPort()));

        runner.setOutputFolder(reportsOutpuDirectory);



        LOG.info("SoapUi-Call for " + runner.getHost());



        runner.setJUnitReport(true);

        runner.setPrintReport(true);

        runner.run();

    }

}

我的@Deployment-Method 看起来像这样:

@Deployment
public static Archive<?> createDeployment() {
        return ShrinkWrap.create(MavenImporter.class).loadPomFromFile("pom.xml").importBuildOutput().as(WebArchive.class);
}

我现在得到这个异常:

java.lang.RuntimeException: Could not invoke deployment method: public static org.jboss.shrinkwrap.api.Archive com.bosch.mome.ws.facade.common.soapui.MarketTransparencyServiceEndpointsSoapUiTest.createDeployment()
    at org.jboss.shrinkwrap.api.UnknownExtensionTypeException.newInstance(UnknownExtensionTypeException.java:68)
    at org.jboss.shrinkwrap.api.UnknownExtensionTypeExceptionDelegator.newExceptionInstance(UnknownExtensionTypeExceptionDelegator.java:37)
    at org.jboss.shrinkwrap.impl.base.ServiceExtensionLoader.findExtensionImpl(ServiceExtensionLoader.java:279)
    at org.jboss.shrinkwrap.impl.base.ServiceExtensionLoader.loadExtensionMapping(ServiceExtensionLoader.java:246)
    at org.jboss.shrinkwrap.impl.base.ServiceExtensionLoader.createFromLoadExtension(ServiceExtensionLoader.java:212)
    at org.jboss.shrinkwrap.impl.base.ServiceExtensionLoader.load(ServiceExtensionLoader.java:108)
    at org.jboss.shrinkwrap.impl.base.ArchiveBase.as(ArchiveBase.java:662)
    at org.jboss.shrinkwrap.api.ArchiveFactory.create(ArchiveFactory.java:150)
    at org.jboss.shrinkwrap.api.ShrinkWrap.create(ShrinkWrap.java:163)
    at com.bosch.mome.ws.facade.common.soapui.MarketTransparencyServiceEndpointsSoapUiTest.createDeployment(MarketTransparencyServiceEndpointsSoapUiTest.java:82)

Jan 19, 2015 6:29:46 PM org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-127.0.0.1-8888

我没有单独添加资产,因为我目前正在集成 junit SoapUi 库和 Arquillian 以测试端点并且需要加载完整的应用程序/WebArchive。

我正在寻找 ShrinkWrap javadoc,但找不到有效的解决方案/修复程序。

在 javadoc 中,我阅读了以下内容:

UnknownExtensionTypeException: Indicates that a default name cannot be generated for a given type because no extension mapping has been configured via ExtensionLoader.getExtensionFromExtensionMapping(Class)

但我不知道在哪里可以准确配置扩展映射。没有教程或示例。或者可能是我找不到它们。

有人对这个新的 ShrinkWrap 功能有经验吗?

【问题讨论】:

  • Rubén,你找到解决办法了吗?
  • @Ben Page,我们决定模拟这些电话,因为我们没有时间进一步研究。抱歉反应迟了。

标签: java junit4 soapui jboss-arquillian shrinkwrap


【解决方案1】:

我知道它已经有一段时间了,但也许有人觉得它有帮助。

我遇到了同样的问题,原因是我对我的 pom.xml 太贪心了。我有以下依赖项:

<dependency>
  <groupId>org.jboss.shrinkwrap.resolver</groupId>
  <artifactId>shrinkwrap-resolver-api-maven</artifactId>
  <version>${version.shrinkwrap.resolvers}</version>
  <scope>test</scope>
</dependency>

如果你像这样使用 BOM 和 depchain,错误就会消失:

<dependencyManagement>
  <dependencies>
    ...
    <!-- Override dependency resolver with latest version.
         This must go *BEFORE* the Arquillian BOM. -->
    <dependency>
      <groupId>org.jboss.shrinkwrap.resolver</groupId>
      <artifactId>shrinkwrap-resolver-bom</artifactId>
      <version>${version.shrinkwrap.resolvers}</version>
      <scope>import</scope>
      <type>pom</type>
    </dependency>
    <dependency>
      <groupId>org.jboss.arquillian</groupId>
      <artifactId>arquillian-bom</artifactId>
      <version>1.1.11.Final</version>
      <scope>import</scope>
      <type>pom</type>
    </dependency>
    ...
  </dependencies>
</dependencyManagement>
<dependencies>
    ...
    <dependency>
      <groupId>org.jboss.shrinkwrap.resolver</groupId>
      <artifactId>shrinkwrap-resolver-depchain</artifactId>
      <version>${version.shrinkwrap.resolvers}</version>
      <scope>test</scope>
      <type>pom</type>
    </dependency>
    ...
    <!-- your container goes here, too (for me it was arquillian-tomee-embedded) -->
</dependencies>

还可以查看文档:https://github.com/shrinkwrap/resolver/blob/master/README.asciidoc

【讨论】:

  • 感谢您的提示。我们改变了测试方法,但只要我有时间,我们就会检查它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 2016-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多