我们目前在 Spring Boot 应用程序中使用 SAP Cloud Platform Provisioning SDK 提供自己的 OData 服务,该 SDK 是 SAP Cloud SDK 的一部分。我们正在各自的 Maven 模块中创建集成测试,但是当通过 Maven 执行它时,它会失败并显示以下堆栈跟踪:
[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)
查看代码,这似乎与以下帖子有关:
在 SDK 中,OData EDMX 文件作为文件读取,但是由于在 Maven 执行期间它位于(应用程序模块的)单独的 JAR 文件中,因此无法以这种方式访问。相反,它需要作为流读取,这反过来似乎需要一些重构。
作为一种解决方法,我将 EDMX 文件复制到了集成测试模块的 src/test/resources/edmx 中。
我现在想知道我是否在这里遗漏了什么,或者按照 SAP Cloud SDK 通常执行的集成测试的执行是否与供应框架不兼容?