45.3.16自动配置的数据MongoDB测试
您可以使用 @DataMongoTest 来测试MongoDB应用程序。默认情况下,它配置内存中嵌入的MongoDB(如果可用),配
置 MongoTemplate ,扫描 @Document 类,并配置Spring Data MongoDB存储库。常规 @Component beans未加载
到 ApplicationContext 。(
可以在附录中找到 @DataMongoTest 启用的自动配置设置列表 。
以下类显示正在使用的 @DataMongoTest 注释:
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@DataMongoTest
public class ExampleDataMongoTests {
@Autowired
private MongoTemplate mongoTemplate;
//
}
内存中嵌入式MongoDB通常适用于测试,因为它速度快,不需要任何开发人员安装。但是,如果您更喜欢对真正的MongoDB服务器运行测
试,则应排除嵌入式MongoDB自动配置,如以下示例所示:
import org.junit.runner.RunWith;
import org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@DataMongoTest(excludeAutoConfiguration = EmbeddedMongoAutoConfiguration.class)
public class ExampleDataMongoNonEmbeddedTests {
}
45.3.17自动配置的数据Neo4j测试
您可以使用 @DataNeo4jTest 来测试Neo4j应用程序。默认情况下,它使用内存中嵌入式Neo4j(如果嵌入式驱动程序可用),扫
描 @NodeEntity 类,并配置Spring Data Neo4j存储库。常规 @Component beans未加载到 ApplicationContext 。(有关使用带有Spring
Boot的Neo4J的更多信息,请参阅本章前面的“ 第31.3节”,“Neo4j”。)
可以在附录中找到 @DataNeo4jTest 启用的自动配置设置列表 。
以下示例显示了在Spring Boot中使用Neo4J测试的典型设置:
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.neo4j.DataNeo4jTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@DataNeo4jTest
public class ExampleDataNeo4jTests {
@Autowired
private YourRepository repository;
//
}
默认情况下,Data Neo4j测试是事务性的,并在每次测试结束时回滚。有关更多详细信息,请参阅Spring框架参考文档中的相关部分。如果这
不是您想要的,您可以禁用测试或整个类的事务管理,如下所示:
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.autoconfigure.data.neo4j.DataNeo4jTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringRunner.class)
@DataNeo4jTest
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public class ExampleNonTransactionalTests {
}
45.3.18自动配置的数据Redis测试
您可以使用 @DataRedisTest 来测试Redis应用程序。默认情况下,它会扫描 @RedisHash 类并配置Spring Data Redis存储库。常
规 @Component beans未加载到 ApplicationContext 。(有关将Redis与Spring Boot一起使用的更多信息,请参阅本章前面的“ 第31.1
节”,“37 /}”。
可以在附录中找到 @DataRedisTest 启用的自动配置设置列表 。
以下示例显示正在使用的 @DataRedisTest 注释:
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.redis.DataRedisTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@DataRedisTest
public class ExampleDataRedisTests {
@Autowired
private YourRepository repository;
//
}
45.3.19自动配置的数据LDAP测试
您可以使用 @DataLdapTest 来测试LDAP应用程序。默认情况下,它配置内存中嵌入式LDAP(如果可用),配置 LdapTemplate ,扫
描 @Entry 类,并配置Spring数据LDAP存储库。常规 @Component beans未加载到 ApplicationContext 。(有关将LDAP与Spring Boot一起
使用的更多信息,请参阅本章前面的“ 第31.9节”,“LDAP”。)
可以在附录中找到 @DataLdapTest 启用的自动配置设置列表 。
以下示例显示正在使用的 @DataLdapTest 注释:
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.ldap.DataLdapTest;
import org.springframework.ldap.core.LdapTemplate;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@DataLdapTest
public class ExampleDataLdapTests {
@Autowired
private LdapTemplate ldapTemplate;
//
}
内存中嵌入式LDAP通常适用于测试,因为它速度快,不需要任何开发人员安装。但是,如果您希望针对真实LDAP服务器运行测试,则应排除嵌
入式LDAP自动配置,如以下示例所示:
import org.junit.runner.RunWith;
import org springframework boot autoconfigure ldap embedded EmbeddedLdapAutoConfiguration;
import org.springframework.boot.autoconfigure.ldap.embedded.EmbeddedLdapAutoConfiguration;
import org.springframework.boot.test.autoconfigure.data.ldap.DataLdapTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@DataLdapTest(excludeAutoConfiguration = EmbeddedLdapAutoConfiguration.class)
public class ExampleDataLdapNonEmbeddedTests {
}
45.3.20自动配置的REST客户端
您可以使用 @RestClientTest 注释来测试REST客户端。默认情况下,它会自动配置Jackson,GSON和Jsonb支持,配
置 RestTemplateBuilder ,并添加对 MockRestServiceServer 的支持。常规 @Component beans未加载到 ApplicationContext 。
可以在附录中找到 @RestClientTest 启用的自动配置设置列表。
应使用 @RestClientTest 的 value 或 components 属性指定要测试的特定beans,如以下示例所示:
@RunWith(SpringRunner.class)
@RestClientTest(RemoteVehicleDetailsService.class)
public class ExampleRestClientTest {
@Autowired
private RemoteVehicleDetailsService service;
@Autowired
private MockRestServiceServer server;
@Test
public void getVehicleDetailsWhenResultIsSuccessShouldReturnDetails()
throws Exception {
this.server.expect(requestTo("/greet/details"))
.andRespond(withSuccess("hello", MediaType.TEXT_PLAIN));
String greeting = this.service.callRestService();
assertThat(greeting).isEqualTo("hello");
}
}
45.3.21自动配置的Spring REST文档测试
您可以使用 @AutoConfigureRestDocs 注释在Mock MVC,REST Assured或WebTestClient的测试中使用Spring REST Docs。它消除了对
Spring REST Docs中JUnit规则的需求。
@AutoConfigureRestDocs 可用于覆盖默认输出目录(如果您使用Maven,则为 target/generated-snippets ;如果您使用Gradle,则
为 build/generated-snippets )。它还可用于配置出现在任何已记录的URI中的主机,方案和端口。