【问题标题】:jhipster java tests failing - application propertiesjhipster java测试失败 - 应用程序属性
【发布时间】:2021-02-09 01:09:28
【问题描述】:

我已经生成了一个 jhipster 单体应用程序。我创建了一个类来连接 AWS S3 并在那里上传一个文件。我在 .yml 文件中定义了属性。在这里一切正常。

当我尝试运行提供的测试时,大多数测试都失败并出现以下错误:

原因:org.springframework.beans.factory.BeanCreationException:创建名为“s3AutoConfig”的bean时出错:注入自动装配的依赖项失败;嵌套异常是 java.lang.IllegalArgumentException:无法解析值“${aws.endpoint.url}”中的占位符“aws.endpoint.url”

S3AutoConfig 是使用属性的类。 我检查了 jhipster 的文档和几个帖子,如下所示: Adding applicationproperties in Jhipster

其中提到您应该在 ApplicationProperties 类中提供属性(似乎有点多余)。

我也在 java 类中定义了属性,但测试仍然失败并出现上述相同的错误。

我应该如何定义属性,以便它们被测试拾取?是否有必要像一些帖子建议的那样在 java 类中提供它们?

【问题讨论】:

    标签: java spring-boot testing properties jhipster


    【解决方案1】:

    您的实施无法工作,因为您在 ApplicationProperties 中定义 Aws 类,这意味着您的 AWS 属性将以 application 为前缀,例如 application.aws.endpoint.url 与您的 application*.yml 结构不匹配这就是您收到此错误的原因。

    您应该将Aws 类及其内部类提取到它自己的文件(Aws.java)并使用前缀“aws”。 此外,最好将其命名为AwsProperties

    @ConfigurationProperties(prefix = "aws", ignoreUnknownFields = false)
    public class Aws {
    
    

    关于测试的第二点是它们使用的类路径与主类不同,因此您应该确保在 src/test/resources/config/application.yml 中定义这些属性

    【讨论】:

    • 谢谢盖尔!是的,真丢脸,我原以为测试会有自己单独的 .yml 文件,但不知何故我没有看到它,感谢您的解释,测试再次正常工作:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 2017-08-31
    • 2021-12-17
    • 2019-01-09
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    相关资源
    最近更新 更多