我为与下游服务交互的Spring Boot应用程序配置了集成测试。我想从spring应用程序中使用的spock
配置application.yml
测试中使用的一些变量。在Spock
和groovy
中是可能的。
我尝试使用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
始终为空。
答案 0 :(得分:0)
您的Spec看起来不完整,单个then:
块对Spock无效。
如果您想要类似的内容,则需要expect:
。
这看起来也像一个Spring Boot项目,如果是的话,您应该使用@SpringBootTest
而不是@ContextConfiguration
。另外,请确保您具有spock-spring
依赖项。