如何从Spock测试框架访问application.yml文件

时间:2019-04-12 19:15:36

标签: spock

我为与下游服务交互的Spring Boot应用程序配置了集成测试。我想从spring应用程序中使用的spock配置application.yml测试中使用的一些变量。在Spockgroovy中是可能的。

我尝试使用Spring注释来捕获数据,就像在Spring应用程序中所做的一样。

我尝试使用以下代码,但始终为null。

@Value('test.base.url')
def variableName

我还尝试使用application.yml指向@PropertySource('classpath:application.yml')

package com.company.package1

import groovyx.net.http.RESTClient
import org.junit.experimental.categories.Category
import org.springframework.http.HttpStatus
import org.springframework.http.MediaType
import org.springframework.test.context.ContextConfiguration
import spock.lang.Shared
import spock.lang.Specification
import spock.lang.Unroll

@ContextConfiguration(classes = Application.class)
@Category(IntegrationTest.class)
class GetVariableTests extends Specification {

    @Value('test.base.url')
    def variableName

    def "test variable name"() {
        then:
            variableName == "http://localhost:8020/"
    }
}

application.yml

test:
   base:
       url:"http://localhost:8020/"

我希望此测试通过。但是variableName始终为空。

1 个答案:

答案 0 :(得分:0)

您的Spec看起来不完整,单个then:块对Spock无效。 如果您想要类似的内容,则需要expect:

这看起来也像一个Spring Boot项目,如果是的话,您应该使用@SpringBootTest而不是@ContextConfiguration。另外,请确保您具有spock-spring依赖项。