Spring @TestPropertySource位置不起作用

时间:2017-02-12 20:23:46

标签: java spring spring-boot

以下是我测试此问题的设置。我已经设置了一个名为Application.java的简单Springboot应用程序。我的测试名为DemoTest.java,它加载了我在application.properties中定义的Springboot应用程序指定的默认属性。我正在使用@TestPropertySource批注来覆盖应用程序定义的任何属性。我曾期望我的test.properties文件中定义的属性覆盖应用程序属性,但事实并非如此。基于@TestPropertySource的javadocs,这应该可行。如果我在@TestPropertySource中指定内联属性,它会覆盖。但是,如果我有多个属性或需要覆盖默认应用程序属性的多个测试,这并不理想。

application.properties my.property =假

test.properties my.property =真

@SpringBootApplication
public class Application {

public static void main(String[] args) throws Exception {
    SpringApplication.run(Application.class, args);
}
}


@RunWith(SpringRunner.class)
@SpringBootTest(classes=Application.class, webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource(locations="classpath:test.properties")
public class DemoTest {
@Autowired
private Environment env;


@Test
public void test() {
    // test.properties for property "my.property=true" but pulls false from the application.properties
    assertEquals(Boolean.TRUE, Boolean.valueOf(env.getProperty("my.property")));
}
}

0 个答案:

没有答案