首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在SDK中对自己的OData服务执行集成测试

如何在SDK中对自己的OData服务执行集成测试
EN

Stack Overflow用户
提问于 2019-09-12 07:04:10
回答 2查看 117关注 0票数 3

目前,我们在Spring应用程序中提供了自己的OData服务,它是SAP的一部分。我们正在各自的maven模块中创建集成测试,但是当通过Maven执行该测试时,它将失败,其堆栈跟踪如下:

代码语言:javascript
运行
复制
[http-nio-auto-1-exec-1] ERROR com.sap.cloud.sdk.service.prov.v2.rt.cdx.CDXRuntimeDelegate - Error initializing the service <service-name>
java.lang.IllegalArgumentException: URI is not hierarchical
        at java.io.File.<init>(File.java:418)
        at com.sap.cloud.sdk.service.prov.v2.rt.cdx.CDXRuntimeDelegate.getFilefromFileName(CDXRuntimeDelegate.java:410)
        at com.sap.cloud.sdk.service.prov.v2.rt.cdx.CDXRuntimeDelegate.getFileForService(CDXRuntimeDelegate.java:387)
        at com.sap.cloud.sdk.service.prov.v2.rt.cdx.CDXRuntimeDelegate.initialize(CDXRuntimeDelegate.java:252)
        at com.sap.cloud.sdk.service.prov.v2.rt.cdx.CDXRuntimeDelegate.getModelProvider(CDXRuntimeDelegate.java:204)
        at com.sap.gateway.core.api.provider.delegate.ProviderFactory.createModelProvider(ProviderFactory.java:202)
        at com.sap.gateway.core.api.provider.delegate.ProviderFactory.getEdmModelProvider(ProviderFactory.java:128)
        at com.sap.gateway.core.odata4sap.ServiceFactory.createService(ServiceFactory.java:135)

看一下代码,这似乎与下面的文章有关:

为什么我的URI不是分层的?

在SDK中,OData EDMX文件被读取为一个文件,但是由于在maven执行过程中它位于单独的JAR文件(应用程序模块的JAR文件中),所以不能以这种方式访问它。相反,它需要被读取为一个流,这反过来又需要一些重构。

作为解决办法,我将EDMX文件复制到集成测试模块的src/test/resources/edmx中。

我现在想知道我是否在这里遗漏了什么,或者像通常按照SAP那样执行集成测试是否与供应框架不兼容?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-12 07:31:44

虽然我不太熟悉您解释的用例,但我建议您检查一下关于其他资源文件夹的Maven文档。除了自己的/resources文件夹外,还可以将集成测试模块指向应用程序模块的相应/resources文件夹。我认为相对路径应该是可能的。

票数 2
EN

Stack Overflow用户

发布于 2019-09-12 07:35:32

作为Alexander已经发布的内容的另一种选择,您还可以通过maven自动复制文件,如下所示:

代码语言:javascript
运行
复制
            <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <!-- Copying the edmx files to the integration-tests project -->
                <execution>
                    <id>copy-resources</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${basedir}/src/test/resources/edmx</outputDirectory>
                        <resources>
                            <resource>
                                <directory>${project.parent.basedir}/srv/src/main/resources/edmx</directory>
                                <filtering>true</filtering>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
                <execution>
                    <id>default-testResources</id>
                    <phase>process-test-resources</phase>
                    <goals>
                        <goal>testResources</goal>
                    </goals>
                </execution>
                <execution>
                    <id>default-resources</id>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>resources</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57901372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档