@ -6411,9 +6411,10 @@ providing a `@...Test` annotation that loads the `ApplicationContext` and one or
@@ -6411,9 +6411,10 @@ providing a `@...Test` annotation that loads the `ApplicationContext` and one or
more `@AutoConfigure...` annotations that can be used to customize auto-configuration
settings.
NOTE: Each slice loads a very restricted set of auto-configuration classes. If you need
to exclude one of them, most `@...Test` annotations provide an `excludeAutoConfiguration`
attribute. Alternatively, you can use `@ImportAutoConfiguration#exclude`.
NOTE: Each slice restricts component scan to appropriate components and loads a very
restricted set of auto-configuration classes. If you need to exclude one of them,
most `@...Test` annotations provide an `excludeAutoConfiguration` attribute.
Alternatively, you can use `@ImportAutoConfiguration#exclude`.
TIP: It is also possible to use the `@AutoConfigure...` annotations with the standard
`@SpringBootTest` annotation. You can use this combination if you are not interested in
@ -6431,10 +6432,13 @@ mapper, which can be one of the following libraries:
@@ -6431,10 +6432,13 @@ mapper, which can be one of the following libraries:
* `Gson`
* `Jsonb`
TIP: A list of the auto-configuration that is enabled by `@JsonTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
If you need to configure elements of the auto-configuration, you can use the
`@AutoConfigureJsonTesters` annotation.
Spring Boot includes AssertJ-based helpers that work with the JSONassert and JsonPath
Spring Boot includes AssertJ-based helpers that work with the JSONAssert and JsonPath
libraries to check that JSON appears as expected. The `JacksonTester`, `GsonTester`,
`JsonbTester`, and `BasicJsonTester` classes can be used for Jackson, Gson, Jsonb, and
Strings respectively. Any helper fields on the test class can be `@Autowired` when using
@ -6485,9 +6489,6 @@ NOTE: JSON helper classes can also be used directly in standard unit tests. To d
@@ -6485,9 +6489,6 @@ NOTE: JSON helper classes can also be used directly in standard unit tests. To d
call the `initFields` method of the helper in your `@Before` method if you do not use
`@JsonTest`.
A list of the auto-configuration that is enabled by `@JsonTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
`GenericConverter`, `Filter`, `WebMvcConfigurer`, and `HandlerMethodArgumentResolver`.
Regular `@Component` beans are not scanned when using this annotation.
TIP: A list of the auto-configuration settings that are enabled by `@WebMvcTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
TIP: If you need to register extra components, such as the Jackson `Module`, you can
import additional configuration classes by using `@Import` on your test.
@ -6591,14 +6595,12 @@ that the driver exits after each test and that a new instance is injected. If yo
@@ -6591,14 +6595,12 @@ that the driver exits after each test and that a new instance is injected. If yo
not want this behavior, you can add `@Scope("singleton")` to your `WebDriver` `@Bean`
definition.
A list of the auto-configuration settings that are enabled by `@WebMvcTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
TIP: Sometimes writing Spring MVC tests is not enough; Spring Boot can help you run
To test that {spring-reference}/web-reactive.html[Spring WebFlux] controllers are
@ -6608,6 +6610,9 @@ auto-configures the Spring WebFlux infrastructure and limits scanned beans to
@@ -6608,6 +6610,9 @@ auto-configures the Spring WebFlux infrastructure and limits scanned beans to
`WebFluxConfigurer`. Regular `@Component` beans are not scanned when the `@WebFluxTest`
annotation is used.
TIP: A list of the auto-configuration that is enabled by `@WebFluxTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
TIP: If you need to register extra components, such as Jackson `Module`, you can import
additional configuration classes using `@Import` on your test.
@ -6660,9 +6665,6 @@ example shows a class that uses both `@WebFluxTest` and a `WebTestClient`:
@@ -6660,9 +6665,6 @@ example shows a class that uses both `@WebFluxTest` and a `WebTestClient`:
TIP: This setup is only supported by WebFlux applications as using `WebTestClient` in a
mocked web application only works with WebFlux at the moment.
A list of the auto-configuration that is enabled by `@WebFluxTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
NOTE: `@WebFluxTest` cannot detect routes registered via the functional web framework. For
testing `RouterFunction` beans in the context, consider importing your `RouterFunction`
yourself via `@Import` or using `@SpringBootTest`.
@ -6672,6 +6674,7 @@ TIP: Sometimes writing Spring WebFlux tests is not enough; Spring Boot can help
@@ -6672,6 +6674,7 @@ TIP: Sometimes writing Spring WebFlux tests is not enough; Spring Boot can help
You can use the `@DataJpaTest` annotation to test JPA applications. By default, it
@ -6679,6 +6682,9 @@ configures an in-memory embedded database, scans for `@Entity` classes, and conf
@@ -6679,6 +6682,9 @@ configures an in-memory embedded database, scans for `@Entity` classes, and conf
Spring Data JPA repositories. Regular `@Component` beans are not loaded into the
`ApplicationContext`.
TIP: A list of the auto-configuration settings that are enabled by `@DataJpaTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
By default, data JPA tests are transactional and roll back at the end of each test. See
the {spring-reference}testing.html#testcontext-tx-enabling-transactions[relevant section]
in the Spring Framework Reference Documentation for more details. If that is not what you
@ -6756,16 +6762,16 @@ following example:
@@ -6756,16 +6762,16 @@ following example:
}
----
A list of the auto-configuration settings that are enabled by `@DataJpaTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
`@JdbcTest` is similar to `@DataJpaTest` but is for pure JDBC-related tests. By default,
it also configures an in-memory embedded database and a `JdbcTemplate`. Regular
`@Component` beans are not loaded into the `ApplicationContext`.
`@JdbcTest` is similar to `@DataJpaTest` but is for tests that only require a
`DataSource`. By default, it configures an in-memory embedded database and a
`JdbcTemplate`. Regular `@Component` beans are not loaded into the `ApplicationContext`.
TIP: A list of the auto-configuration that is enabled by `@JdbcTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
By default, JDBC tests are transactional and roll back at the end of each test. See the
{spring-reference}testing.html#testcontext-tx-enabling-transactions[relevant section] in
@ -6794,9 +6800,6 @@ If you prefer your test to run against a real database, you can use the
@@ -6794,9 +6800,6 @@ If you prefer your test to run against a real database, you can use the
`@AutoConfigureTestDatabase` annotation in the same way as for `DataJpaTest`. (See
@ -6805,7 +6808,11 @@ You can use `@JooqTest` in a similar fashion as `@JdbcTest` but for jOOQ-related
@@ -6805,7 +6808,11 @@ You can use `@JooqTest` in a similar fashion as `@JdbcTest` but for jOOQ-related
As jOOQ relies heavily on a Java-based schema that corresponds with the database schema,
the existing `DataSource` is used. If you want to replace it with an in-memory database,
you can use `@AutoConfigureTestDatabase` to override those settings. (For more about using
jOOQ with Spring Boot, see "<<boot-features-jooq>>", earlier in this chapter.)
jOOQ with Spring Boot, see "<<boot-features-jooq>>", earlier in this chapter.) Regular
`@Component` beans are not loaded into the `ApplicationContext`.
TIP: A list of the auto-configuration that is enabled by `@JooqTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
`@JooqTest` configures a `DSLContext`. Regular `@Component` beans are not loaded into the
`ApplicationContext`. The following example shows the `@JooqTest` annotation in use:
@ -6833,8 +6840,6 @@ test class as
@@ -6833,8 +6840,6 @@ test class as
A list of the auto-configuration that is enabled by `@JooqTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
@ -6846,6 +6851,9 @@ in-memory embedded MongoDB (if available), configures a `MongoTemplate`, scans f
@@ -6846,6 +6851,9 @@ in-memory embedded MongoDB (if available), configures a `MongoTemplate`, scans f
`@Component` beans are not loaded into the `ApplicationContext`. (For more about using
MongoDB with Spring Boot, see "<<boot-features-mongodb>>", earlier in this chapter.)
TIP: A list of the auto-configuration settings that are enabled by `@DataMongoTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
The following class shows the `@DataMongoTest` annotation in use:
[source,java,indent=0]
@ -6886,8 +6894,6 @@ the following example:
@@ -6886,8 +6894,6 @@ the following example:
}
----
A list of the auto-configuration settings that are enabled by `@DataMongoTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
@ -6899,6 +6905,9 @@ configures Spring Data Neo4j repositories. Regular `@Component` beans are not lo
@@ -6899,6 +6905,9 @@ configures Spring Data Neo4j repositories. Regular `@Component` beans are not lo
the `ApplicationContext`. (For more about using Neo4J with Spring Boot, see
"<<boot-features-neo4j>>", earlier in this chapter.)
TIP: A list of the auto-configuration settings that are enabled by `@DataNeo4jTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
The following example shows a typical setup for using Neo4J tests in Spring Boot:
[source,java,indent=0]
@ -6943,9 +6952,6 @@ as follows:
@@ -6943,9 +6952,6 @@ as follows:
----
A list of the auto-configuration settings that are enabled by `@DataNeo4jTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
@ -6955,6 +6961,9 @@ You can use `@DataRedisTest` to test Redis applications. By default, it scans fo
@@ -6955,6 +6961,9 @@ You can use `@DataRedisTest` to test Redis applications. By default, it scans fo
beans are not loaded into the `ApplicationContext`. (For more about using Redis with
Spring Boot, see "<<boot-features-redis>>", earlier in this chapter.)
TIP: A list of the auto-configuration settings that are enabled by `@DataRedisTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
The following example shows the `@DataRedisTest` annotation in use:
[source,java,indent=0]
@ -6975,9 +6984,6 @@ The following example shows the `@DataRedisTest` annotation in use:
@@ -6975,9 +6984,6 @@ The following example shows the `@DataRedisTest` annotation in use:
}
----
A list of the auto-configuration settings that are enabled by `@DataRedisTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
@ -6988,6 +6994,9 @@ classes, and configures Spring Data LDAP repositories. Regular `@Component` bean
@@ -6988,6 +6994,9 @@ classes, and configures Spring Data LDAP repositories. Regular `@Component` bean
loaded into the `ApplicationContext`. (For more about using LDAP with
Spring Boot, see "<<boot-features-ldap>>", earlier in this chapter.)
TIP: A list of the auto-configuration settings that are enabled by `@DataLdapTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
The following example shows the `@DataLdapTest` annotation in use:
[source,java,indent=0]
@ -7028,19 +7037,20 @@ following example:
@@ -7028,19 +7037,20 @@ following example:
}
----
A list of the auto-configuration settings that are enabled by `@DataLdapTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
===== Auto-configured Spring REST Docs Tests with Mock MVC
`@AutoConfigureRestDocs` customizes the `MockMvc` bean to use Spring REST Docs. You can
inject it by using `@Autowired` and use it in your tests as you normally would when using
Mock MVC and Spring REST Docs, as shown in the following example:
@ -7163,7 +7171,6 @@ generate the default snippets. The following example shows a
@@ -7163,7 +7171,6 @@ generate the default snippets. The following example shows a