当前位置: 首页 > 知识库问答 >
问题:

Spring Boot integration tests不读取属性文件

任元青
2023-03-14

我想创建一个集成测试,其中Spring Boot将使用@value注释从.properties文件读取一个值。
但每次运行测试时,我的断言都会失败,因为Spring无法读取该值:

org.junit.ComparisonFailure: 
Expected :works!
Actual   :${test}

我的测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {WebTests.ConfigurationClass.class, WebTests.ClassToTest.class})
public class WebTests {
    @Configuration
    @ActiveProfiles("test")
    static class ConfigurationClass {}

    @Component
    static class ClassToTest{
        @Value("${test}")
        private String test;
    }

    @Autowired
    private ClassToTest config;

    @Test
    public void testTransferService() {
        Assert.assertEquals(config.test, "works!");
    }
}

src/main/resource包下的application-test.properties包含:

test=works! 

这种行为的原因是什么?我该如何修复它?
任何帮助都非常感谢。

共有1个答案

钱安和
2023-03-14

您应该使用@PropertySource或@TestPropertySource加载Application-Test.Properties

@RunWith(SpringJUnit4ClassRunner.class)
@TestPropertySource(locations="classpath:application-test.properties")
@ContextConfiguration(classes = {WebTests.ConfigurationClass.class, WebTests.ClassToTest.class})
public class WebTests {

}

有关更多信息:查看Junit测试中的覆盖默认Spring-Boot Application.Properties设置

 类似资料:
  • 问题内容: 我创建了一个REST Web服务,在其中创建了config.properties文件来存储和检索整个应用程序中的一些用户名和密码。我将其存储在/src/main/resources/config.properties中。 当我尝试从eclipse的Java代码加载它时,它工作正常。但是当我将它部署在tomcat中时,它没有加载。我用来加载属性文件的代码是 谁能帮我解决这个问题 问题答案

  • 问题内容: 我有以下代码尝试读取属性文件: 我在最后一行有一个例外。特别: 问题答案: 根据你的异常,该值为null,这意味着类加载器未找到你的属性文件。我猜测myProp.properties位于项目的根目录中,如果是这种情况,则需要前面的斜杠:

  • 问题内容: 在angularJS中,如何从属性文件中读取值? app.js: 问题答案: 如果是驻留在Web服务器上的文件,则只需执行以下操作: 您可以在此处查看示例: http://plnkr.co/edit/3Ne3roFOwcfVmg2mgnUr?p=preview

  • 问题内容: 我正在用弹簧。我需要从属性文件中读取值。这是内部属性文件,而不是外部属性文件。属性文件可以如下。 我需要以传统方式从属性文件中读取这些值。如何实现呢?Spring 3.0是否有最新方法? 问题答案: 在你的上下文中配置PropertyPlaceholder: 然后,你引用bean中的属性: 编辑:更新了代码以使用逗号分隔的多个值来解析属性: 如果那不起作用,则可以定义一个带有属性的be

  • 问题内容: 我有一个JAR文件,我的所有代码都已存档以便运行。我必须访问一个属性文件,每次运行前都需要对其进行更改/编辑。我想将属性文件保留在JAR文件所在的目录中。无论如何,有没有告诉Java从该目录中提取属性文件? 注意:我不想将属性文件保留在主目录中或在命令行参数中传递属性文件的路径。 问题答案: 因此,你希望将与主/可运行jar相同文件夹中的文件视为文件,而不是作为主/可运行jar的资源。

  • 问题内容: 我是jquery的新手。我想使用JavaScript或jquery读取jsp页面中的Java属性文件。我对此进行了调查,但并不满意。 我的应用程序是由Struts2,Eclipse Juno和Windows7开发的。这是我的javascript 这是我的属性文件 我想从属性文件中读取 确认 和 警报 框值。那么是否可以使用Ajax或jquery或javascript? 问题答案: 一个