我想在我的Spring Boot应用程序中使用带有spock的测试容器。
这些是我的依赖项:
dependencies {
compile('org.springframework.boot:spring-boot-starter-data-redis')
compile('org.springframework.boot:spring-boot-starter-web')
compile 'org.testcontainers:spock:1.8.3'
runtime('org.springframework.boot:spring-boot-devtools')
compile 'org.codehaus.groovy:groovy-all:2.4.15'
compileOnly('org.projectlombok:lombok')
compile 'org.testcontainers:testcontainers:1.8.3'
testCompile('org.springframework.boot:spring-boot-starter-test')
testCompile "org.spockframework:spock-core:1.1-groovy-2.4-rc-4"
testCompile "org.spockframework:spock-spring:1.1-groovy-2.4-rc-4"
testCompile 'com.github.testcontainers:testcontainers-spock:-SNAPSHOT'
}
我已经如下初始化测试:
@SpringBootTest
@Testcontainers
class ProductRedisRepositoryTest extends Specification {
@Autowired
ProductRedisRepository productRedisRepository
@Autowired
TestComponent testComponent
static Consumer<CreateContainerCmd> cmd = { -> e.withPortBindings(new PortBinding(Ports.Binding.bindPort(6379), new ExposedPort(6379)))}
@Shared
public static GenericContainer redis =
new GenericContainer("redis:3.0.2")
//.withExposedPorts(6379)
.withCreateContainerCmdModifier(cmd)
def "check redis repository save and get"(){
given:
Product product = Product.builder()
.brand("brand")
.id("id")
.model("model")
.name( "name")
.build()
when:
productRedisRepository.save(product)
Product persistProduct = productRedisRepository.find("id")
then:
persistProduct.getName() == product.getName()
}
}
但是运行测试时它不会启动redis容器。 我的错是什么我该怎么办。
我的springBootVersion ='2.0.4.RELEASE',并且我正在使用Intelij。
这是日志输出:LOG
答案 0 :(得分:2)
请在您的 function AnyFunction(e){ /**** your code *****/ };
$(function () {
$(window).bind('unload', function (e) { return AnyFunction(e); });
$(window).bind('beforeunload', function (e) { return AnyFunction(e); });
});
GenericContainer字段中删除static
关键字。
静态字段不会在Spock框架中用@Shared
注释,因此它们不会被视为规范字段的一部分。
Testcontainers-Spock依靠这些字段来识别GenericContainers。
但是,如果您需要@FieldMetadata
修饰符,则可以解决以下问题:
static