You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
NOTE: Depending on the complexity of your application, you may either have a single `@Configuration` class for your customizations or one class per domain area.
784
784
The latter approach lets you enable it in one of your tests, if necessary, with the `@Import` annotation.
785
+
See <<howto#howto.testing.slice-tests,this how-to section>> for more details on when you might want to enable specific `@Configuration` classes for slice tests.
785
786
786
787
Test slices exclude `@Configuration` classes from scanning.
787
788
For example, for a `@WebMvcTest`, the following configuration will not include the given `WebMvcConfigurer` bean in the application context loaded by the test slice:
The above configuration allows Neo4j-related beans in the application to communicate with Neo4j running inside the Testcontainers-managed Docker container.
39
+
40
+
41
+
42
+
[[howto.testing.slice-tests]]
43
+
=== Structure `@Configuration` classes for inclusion in slice tests
44
+
Slice tests work by restricting Spring Framework's component scanning to a limited set of components based on their type.
45
+
For any beans that are not created via component scanning, for example, beans that are created using the `@Bean` annotation, slice tests will not be able to include/exclude them from the application context.
For a `@WebMvcTest` for an application with the above `@Configuration` class, you might expect to have the `SecurityFilterChain` bean in the application context so that you can test if your controller endpoints are secured properly.
54
+
However, `MyConfiguration` is not picked up by @WebMvcTest's component scanning filter because it doesn't match any of the types specified by the filter.
55
+
You can include the configuration explicitly by annotating the test class with `@Import(MySecurityConfiguration.class)`.
56
+
This will load all the beans in `MyConfiguration` including the `BasicDataSource` bean which isn't required when testing the web tier.
57
+
Splitting the configuration class into two will enable importing just the security configuration.
Having a single configuration class can be inefficient when beans of a certain domain needed to be included in slice tests.
70
+
Instead, structuring the application's configuration as multiple granular classes with beans for a specific domain can enable importing them only for specific slice tests.
0 commit comments