微服务架构之Spring Boot(六十六)

2022-05-23 15:41:56 浏览数 (2)

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中的主机,方案和端口。

0 人点赞