在测试中使用classpath覆盖spring资源值

时间:2018-12-06 14:36:53

标签: java spring

我想在测试中覆盖资源的值:

@SpringBootConfiguration
public class MyExampleConfig {

  @Value("classpath:my-example-resource.yml")
  private Resource myExampleResource;

}

有人知道我可以在测试中覆盖“ classpath:my-example-resource.yml”值吗?

3 个答案:

答案 0 :(得分:1)

如果您正在运行@SpringBootTest,则可以使用以下注释:

@RunWith(SpringRunner.class)
@SpringBootTest(properties = {
        "key=value",
        "key=value"
})

它们将覆盖默认值。

答案 1 :(得分:1)

您可以在资源下为测试包拥有一个单独的application.properties文件,并且可以定义一个键值对,即: data = [((1.0, 54, 0.0), 'less'), ((0.0, 55, 0.0), 'less'), ((0.0, 26, 0.0), 'less'), ((1.0, 40, 0.0), 'more'), ((1.0, 25, 1.0), 'less')] from collections import defaultdict result = defaultdict(list) for value, key in data: result[key].append(value) print(result) 在此文件中,并在代码中使用如下

classpath=classpath:my-example-resource.yml

答案 2 :(得分:1)

您可以在测试包中将创建测试配置(ApplicationTest)与测试.properties.yml一起使用,然后在测试中使用

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = ApplicationTest.class)
public class Test {
    @Test
    public void test() throws Exception {
      //some code
    }
}