Decorate test containers so tests are skipped without Docker

Closes gh-15901
Closes gh-15638
This commit is contained in:
Andy Wilkinson
2019-02-13 17:44:16 +00:00
parent 46bf82ca82
commit 9fb0b97f96
5 changed files with 111 additions and 12 deletions

View File

@@ -18,13 +18,17 @@ package org.springframework.boot.test.autoconfigure.data.neo4j;
import org.junit.ClassRule;
import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runner.RunWith;
import org.junit.runners.model.Statement;
import org.neo4j.ogm.session.Session;
import org.testcontainers.containers.Neo4jContainer;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.util.TestPropertyValues;
import org.springframework.boot.testsupport.testcontainers.SkippableContainer;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;
@@ -46,9 +50,18 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
@DataNeo4jTest
public class DataNeo4jTestIntegrationTests {
public static SkippableContainer<Neo4jContainer<?>> neo4j = new SkippableContainer<Neo4jContainer<?>>(
() -> new Neo4jContainer<>().withAdminPassword(null));
@ClassRule
public static Neo4jContainer<?> neo4j = new Neo4jContainer<>()
.withAdminPassword(null);
public static TestRule skippableContainer = new TestRule() {
@Override
public Statement apply(Statement base, Description description) {
return neo4j.apply(base, description);
}
};
@Autowired
private Session session;
@@ -81,7 +94,8 @@ public class DataNeo4jTestIntegrationTests {
@Override
public void initialize(
ConfigurableApplicationContext configurableApplicationContext) {
TestPropertyValues.of("spring.data.neo4j.uri=" + neo4j.getBoltUrl())
TestPropertyValues
.of("spring.data.neo4j.uri=" + neo4j.getContainer().getBoltUrl())
.applyTo(configurableApplicationContext.getEnvironment());
}

View File

@@ -23,6 +23,7 @@ import org.testcontainers.containers.Neo4jContainer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.util.TestPropertyValues;
import org.springframework.boot.testsupport.testcontainers.SkippableContainer;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.Environment;
@@ -43,8 +44,8 @@ import static org.assertj.core.api.Assertions.assertThat;
public class DataNeo4jTestPropertiesIntegrationTests {
@ClassRule
public static Neo4jContainer<?> neo4j = new Neo4jContainer<>()
.withAdminPassword(null);
public static SkippableContainer<Neo4jContainer<?>> neo4j = new SkippableContainer<Neo4jContainer<?>>(
() -> new Neo4jContainer<>().withAdminPassword(null));
@Autowired
private Environment environment;
@@ -60,7 +61,8 @@ public class DataNeo4jTestPropertiesIntegrationTests {
@Override
public void initialize(
ConfigurableApplicationContext configurableApplicationContext) {
TestPropertyValues.of("spring.data.neo4j.uri=" + neo4j.getBoltUrl())
TestPropertyValues
.of("spring.data.neo4j.uri=" + neo4j.getContainer().getBoltUrl())
.applyTo(configurableApplicationContext.getEnvironment());
}

View File

@@ -23,6 +23,7 @@ import org.testcontainers.containers.Neo4jContainer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.util.TestPropertyValues;
import org.springframework.boot.testsupport.testcontainers.SkippableContainer;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.ComponentScan.Filter;
@@ -44,8 +45,8 @@ import static org.assertj.core.api.Assertions.assertThat;
public class DataNeo4jTestWithIncludeFilterIntegrationTests {
@ClassRule
public static Neo4jContainer<?> neo4j = new Neo4jContainer<>()
.withAdminPassword(null);
public static SkippableContainer<Neo4jContainer<?>> neo4j = new SkippableContainer<Neo4jContainer<?>>(
() -> new Neo4jContainer<>().withAdminPassword(null));
@Autowired
private ExampleService service;
@@ -61,7 +62,8 @@ public class DataNeo4jTestWithIncludeFilterIntegrationTests {
@Override
public void initialize(
ConfigurableApplicationContext configurableApplicationContext) {
TestPropertyValues.of("spring.data.neo4j.uri=" + neo4j.getBoltUrl())
TestPropertyValues
.of("spring.data.neo4j.uri=" + neo4j.getContainer().getBoltUrl())
.applyTo(configurableApplicationContext.getEnvironment());
}