Spring Boot中文參考指南46.3.16、自動配置的 Data MongoDB 測試

下一篇[未完待續]

Spring Boot中文參考指南46.3.16、自動配置的 Data MongoDB 測試

<code>英文原文:https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-testing.html/<code>
<code>GitHub:https://github.com/jijicai/Spring/tree/master/spring-boot/<code>

46.3.16、自動配置的 Data MongoDB 測試

你可以使用 @DataMongoTest 測試 MongoDB 應用程序。默認情況下,它配置內存中嵌入的 MongoDB(如果可用),配置 MongoTemplate,掃描 @Document 類,並配置 Spring Data MongoDB 存儲庫。常規 @Component bean 未加載到 ApplicationContext 中。(有關在 Spring Boot 中使用 MongoDB 的更多信息,請參閱本章之前的第 32.2 節:MongoDB。)(https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-nosql.html#boot-features-mongodb )

提示:可以在附錄中找到由 @DataMongoTest 啟用的自動配置的列表。(https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/test-auto-configuration.html )

以下類顯示了正在使用的 @DataMongoTest 註解:

Spring Boot中文參考指南46.3.16、自動配置的 Data MongoDB 測試

<code>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;

//
}/<code>

內存中嵌入的 MongoDB 通常可以很好地用於測試,因為它速度快,不需要任何開發者安裝。但是,如果你希望對真實的 MongoDB 服務器運行測試,則應排除嵌入式 MongoDB 的自動配置,如下面示例所示:

Spring Boot中文參考指南46.3.16、自動配置的 Data MongoDB 測試

<code>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 {

}/<code>

46.3.17、自動配置的 Data Neo4j 測試

你可以使用 @DataNeo4jTest 測試 Neo4j 應用程序。默認情況下,它使用內存中嵌入的 Neo4j(如果嵌入式驅動程序可用),掃描 @NodeEntity 類,並配置 Spring Data Neo4j 存儲庫。常規 @Component bean 未加載到 ApplicationContext 中。(有關在 Spring Boot 中使用 Neo4J 的更多信息,請參見本章之前的第 32.3 節:Neo4j)。(https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-nosql.html#boot-features-neo4j )

提示:可以在附錄中找到由 @DataNeo4jTest 啟用的自動配置的列表。(https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/test-auto-configuration.html )

以下示例顯示了在 Spring Boot 中使用 Neo4J 測試的典型設置:

Spring Boot中文參考指南46.3.16、自動配置的 Data MongoDB 測試

<code>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;

//
}/<code>

默認情況下,Data Neo4j 測試是事務性的,並在每個測試結束時回滾。有關更多詳細信息,請參見 Spring Framework 參考文檔中的相關部分。如果這不是你想要的,你可以為一個測試或整個類禁用事務管理,如下所示:

Spring Boot中文參考指南46.3.16、自動配置的 Data MongoDB 測試

<code>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 {

}/<code>

46.3.18、自動配置的 Data Redis 測試

你可以使用 @DataRedisTest 測試 Redis 應用程序。默認情況下,它會掃描 @RedisHash 類並配置 Spring Data Redis 存儲庫。常規 @Component bean 未加載到 ApplicationContext 中。(有關在 Spring Boot 中使用 Redis 的更多信息,請參閱本章之前的第 32.1 節:Redis。)(https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-nosql.html#boot-features-redis)

提示:可以在附錄中找到由 @DataRedisTest 啟用的自動配置的列表。(https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/test-auto-configuration.html )

以下示例展示了正在使用的 @DataRedisTest 註解:

Spring Boot中文參考指南46.3.16、自動配置的 Data MongoDB 測試

<code>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;

//
}/<code>

46.3.19、自動配置的 Data LDAP 測試

你可以使用 @DataLdapTest 測試 LDAP 應用程序。默認情況下,它配置內存中嵌入的 LDAP(如果可用),配置 LdapTemplate,掃描 @Entry 類,並配置 Spring Data LDAP 存儲庫。常規 @Component bean 未加載到 ApplicationContext 中。(有關在 Spring Boot 中使用 LDAP 的更多信息,請參閱本章之前的第 32.9 節:LDAP。)(https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-nosql.html#boot-features-ldap )

可以在附錄中找到由 @DataLdapTest 啟用的自動配置的列表。(https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/test-auto-configuration.html )

以下示例展示了正在使用的 @DataLdapTest 註解:

Spring Boot中文參考指南46.3.16、自動配置的 Data MongoDB 測試

<code>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;

//
}/<code>

內存中嵌入的 LDAP 通常可以很好地用於測試,因為它速度快,不需要任何開發者安裝。但是,如果你希望對真實的 LDAP 服務器運行測試,則應排除嵌入式 LDAP 的自動配置,如下面示例所示:

Spring Boot中文參考指南46.3.16、自動配置的 Data MongoDB 測試

<code>import org.junit.runner.RunWith;
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 {

}/<code>

46.3.20、自動配置的 REST 客戶端

你可以使用 @RestClientTest 註解來測試 REST 客戶端。默認情況下,它會自動配置 Jackson、 GSON 和 Jsonb 支持,配置 RestTemplateBuilder,並添加對 MockRestServiceServer 的支持。常規 @Component bean 未加載到 ApplicationContext 中。

提示:可以在附錄中找到由 @RestClientTest 啟用的自動配置的列表。(https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/test-auto-configuration.html )

要測試的特定 bean 應使用 @RestClientTest 的 value 或 components 屬性指定,如下面示例所示:

Spring Boot中文參考指南46.3.16、自動配置的 Data MongoDB 測試

<code>@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");
}

}/<code>

下一篇[未完待續]


分享到:


相關文章: