无法从 JUnit 中的 Spring 引导读取应用程序属性



我有一个JUnit测试,我想针对已经在指定端口的计算机上运行的REST服务运行。已经用Postman测试了REST服务,并且工作正常。

此处的计划是通过在属性文件中外部化 URL 来使REST URL 可配置。因此,我尝试了以下操作,JUnit类无法读取属性文件值。

商店客户端测试.java

@RunWith(SpringJUnit4ClassRunner.class)
@PropertySource("classpath:application.properties")
public class StoreClientTest {
    private static final String STORE_URI = "http://localhost:8084/hpdas/store";
    private RestTemplate restTemplate;
    @Value("${name}")
    private String name;

    @Before
    public void setUp() {
        restTemplate = new RestTemplate();
    }

    @Test
    public void testStore_NotNull() {
        //PRINTS ${name} instead of abc ?????
        System.out.println("name = " + name);
        assertNotNull(restTemplate.getForObject(STORE_URI, Map.class));
    }

    @After
    public void tearDown() {
        restTemplate = null;
    }
}

src\test\main\resources\application.properties

name=abc

首先,您需要为测试创建应用程序上下文配置

@SpringBootApplication
@PropertySource(value = "classpath:application.properties")
public class TestContextConfiguration {
}

其次,让你的测试类使用此配置

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = TestContextConfiguration.class)
public class StoreClientTest {
    @Value("${name}")
    private String name;
    // test cases ..
}  

相关内容

最新更新