类路径:在Spock Integration Test

时间:2017-07-09 12:13:35

标签: java spring-boot integration-testing spock

我有一个Spock集成测试,我用它来测试一个从特定目录加载一些文件的类。 MyClass使用@Value注释来定位要加载的文件:

@Value("${data.directory.path}")
String dataDirectoryPath;

在测试中,我试图将测试数据包含在类路径中,并希望覆盖指示目录所在位置的属性。

@SpringBootTest
@TestPropertySource(
    properties = "data.directory.path=classpath:/test-data"
)

运行我的测试我可以看到我的yml文件中的属性确实已被覆盖,但新值是:' classpath:/ test-data'。 编辑:我希望该值是转换类路径的绝对路径。

我一直试图了解这是Spock问题还是Spring / Boot问题。据我所知,@ SpringBootTest应该创建一个ResourceLoader作为其上下文初始化的一部分,但是资源加载器似乎并没有对&#做事情。 #39;类路径:'前缀。

有没有人这样做或知道可能出错?

目前我在我的课程中添加了一个方法,允许直接设置要使用的路径。然后我可以在我的测试中使用以下内容:

def sut = new MyClass()

def "setup"() {
    sut.setDataPath(Paths.get(getClass().getResource("/test-data").toURI()).toString())
}

0 个答案:

没有答案