Commit Graph

7482 Commits

Author SHA1 Message Date
Phillip Webb 4167469781 Attempt to work around couchbase CI failures 2016-03-23 23:29:42 -07:00
Phillip Webb 88f3fa4f78 Document test improvements in 1.4
Closes gh-4901
2016-03-23 22:22:23 -07:00
Phillip Webb 247bdf9c84 Add a new spring-boot-sample-test application
Add a sample application that demonstrates recently added testing
features.

See gh-4901
2016-03-23 22:22:12 -07:00
Phillip Webb 81d5635571 Add @DataJpaTest annotation
Add @DataJpaTest and @AutoConfigureTestDatabase annotations to allow
testing of an application "slice" that only deals JPA.

See gh-4901
2016-03-23 22:22:03 -07:00
Phillip Webb bbc91cc03f Add @WebMvcTest annotation
Add @WebMvcTest and @AutoConfigureMockMvc annotations to allow testing
of an application "slice" that only deals with Spring MVC.

See gh-4901
2016-03-23 22:21:59 -07:00
Phillip Webb 0bd89017b6 Add @JsonTest annotation
Add @JsonTest and @AutoConfigureJsonTesters annotations to allow testing
of an application "slice" that only deals with JSON marshalling.

See gh-4901
2016-03-23 22:21:29 -07:00
Phillip Webb 56fd4e1f76 Add TypeExcludeFilters support
Provide a way for auto-configuration tests to easily filter scanned
components.

See gh-4901
2016-03-23 22:21:23 -07:00
Phillip Webb 46099c753b Add @PropertyMapping support
Add @PropertyMapping annotation which can be used to mark annotation
attributes that should contribute Environment properties.

Provides a quick way for tests to change auto-configuration behavior in
a structured way.

Fixes gh-4901
2016-03-23 22:21:10 -07:00
Phillip Webb e5f224118b Print AutoConfigureReport on test failures
Add a TestExecutionListener to print the auto-configuration report
when a test cannot load.

See gh-4901
2016-03-23 22:21:04 -07:00
Phillip Webb 6d934bb270 Add spring-boot-test-autoconfigure module
Add a new test module to deal with auto-configuration in tests.

See gh-4901
2016-03-23 22:20:54 -07:00
Phillip Webb fb70a56c79 Support override enable auto-configuration
Provide a way for full auto-configuration to be disabled
programmatically. Primarily added to allow special test annotations to
take over partial auto-configuration but still load
@SpringBootApplication classes.

See gh-4901
2016-03-23 22:20:51 -07:00
Phillip Webb 47f801d535 Make @ImportAutoConfiguration a meta-annotation
Update `@ImportAutoConfiguration` so that it can be used as a
meta-annotation. Also relocate it from the `test` package.

Fixes gh-5473
2016-03-23 22:20:35 -07:00
Phillip Webb ae1d352d34 Allow @Import to be used directly on test classes
Remove the need for a nested @Configuration class when writing a test
that need to @Import configuration.

Primarily added to allow @ImportAutoConfiguration to be used directly
on test classes.

Fixes gh-5473
2016-03-23 22:20:17 -07:00
Phillip Webb ab7b48de84 Provide TestRestTemplate for @WebIntegrationTests
Add a ContextCustomizerFactory to provide TestRestTemplate as a bean for
tests annotated with WebIntegrationTests. Additionally provide support
for automatically expanding URLs of the form `/example` to
`http://localhost:${local.server.port}/example`.

Fixes gh-5227
2016-03-23 22:20:11 -07:00
Phillip Webb cbea16ec01 Support HtmlUnit and Selenium localhost resolution
Provide variants of `WebClient` and `WebConnectionHtmlUnitDriver` that
automatically resolve relative URLs to "localhost:${local.server.port}".

Fixes gh-5472
2016-03-23 22:20:02 -07:00
Phillip Webb 24ab2bd891 Add utilities to help with JSON testing
Add Jackson, Gson and Basic String helper classes that allow AssertJ
assertions to be used to test JSON.

Fixes gh-5471
2016-03-23 22:19:52 -07:00
Phillip Webb 45c4f5f3f1 Add @MockBean support
Add a `@MockBean` annotation which can be used to setup and inject mocks
into an application context. The annotation can be used on test classes,
test fields, configuration classes or configuration fields. When used on
a field the annotation also acts as an injection point.

Fixes gh-5042
2016-03-23 22:19:44 -07:00
Phillip Webb 0829a1bde8 Drop superfluous annotations
Update internal tests to drop annotations that can now
be inferred.

Fixes gh-5470
2016-03-23 22:19:36 -07:00
Phillip Webb 7dffb702b5 Unify use of @BootStrapWith
Update @IntegrationTest to use @BootstrapWith rather than an explicitly
defined set of test execution listeners.

Also introduce a new @SpringApplicationTest annotation that is similar
to  @SpringApplicationConfiguration but a bootstrapper.

Fixes gh-5230
2016-03-23 22:19:33 -07:00
Phillip Webb 90950cfb1c Automatically find test configurations
Allow detection of `@SpringBootConfiguration` classes for both standard
spring tests and bootstrap (@IntegrationTest @WebIntegrationTest) based
tests.

Closes gh-5295
2016-03-23 22:19:04 -07:00
Phillip Webb 600a06af83 Auto-exclude test components from scanning
Add TestTypeExcludeFilter which will automatically attempt to exclude
test only configurations. All `@Configuration` annotated inner-classes
of tests are automatically excluded. The `@TestConfiguration` annotation
can be used to explicitly if a configuration needs explicit exclusion.

See gh-5295
See gh-4901
2016-03-23 22:18:56 -07:00
Phillip Webb 513dec718f Add TestExcludeFilter for component scanning
Add a new TypeFilter specifically for excluding candidate components.
The filter is applied to `@SpringBootApplication` and allows tests to
dynamically contribute exclude filters so that specific classes of
component can be excluded.

See gh-5295
See gh-4901
2016-03-23 22:18:46 -07:00
Phillip Webb 965dd33ec8 Introduce @SpringBootConfiguration annotation
Add a new @SpringBootConfiguration annotation that can be used to
indicate the primary application configuration. The new annotation is
primarily indented to allow test automatically code to find the main
configuration class.

See gh-5295
2016-03-23 22:18:43 -07:00
Phillip Webb 40c2e24a58 Fix SpringApplicationContextLoader customizers
Update SpringApplicationContextLoader to call ContextCustomizers in the
same way as other classes in `spring-test`.

Fixes gh-5294
2016-03-23 22:18:22 -07:00
Phillip Webb c28f552883 Migrate SpringJUnit4ClassRunner to SpringRunner
Replace all existing SpringJUnit4ClassRunner references with the new
SpringRunner alias.

Fixes gh-5292
2016-03-23 22:18:18 -07:00
Phillip Webb 2f815a907a Migrate existing tests from deprecated package
Update the existing tests to use the relocated `spring-boot-test`
classes. Restructuring was achieved using the following command:

find . -type f -name '*.java' -exec sed -i '' \
-e s/org.springframework.boot.test.ConfigFileApplicationContextInitializer/\
org.springframework.boot.test.context.ConfigFileApplicationContextInitializer/g \
-e s/org.springframework.boot.test.EnvironmentTestUtils/\
org.springframework.boot.test.util.EnvironmentTestUtils/g \
-e s/org.springframework.boot.test.IntegrationTest/\
org.springframework.boot.test.context.IntegrationTest/g \
-e s/org.springframework.boot.test.IntegrationTestPropertiesListener/\
org.springframework.boot.test.context.IntegrationTestPropertiesListener/g \
-e s/org.springframework.boot.test.OutputCapture/\
org.springframework.boot.test.rule.OutputCapture/g \
-e s/org.springframework.boot.test.SpringApplicationConfiguration/\
org.springframework.boot.test.context.SpringApplicationConfiguration/g \
-e s/org.springframework.boot.test.SpringApplicationContextLoader/\
org.springframework.boot.test.context.SpringApplicationContextLoader/g \
-e s/org.springframework.boot.test.SpringBootMockServletContext/\
org.springframework.boot.test.mock.web.SpringBootMockServletContext/g \
-e s/org.springframework.boot.test.TestRestTemplate/\
org.springframework.boot.test.web.client.TestRestTemplate/g \
-e s/org.springframework.boot.test.WebIntegrationTest/\
org.springframework.boot.test.context.web.WebIntegrationTest/g {} \;

See gh-5293
2016-03-23 22:17:50 -07:00
Phillip Webb aef7f4bcb1 Restructure spring-boot-test packages
Create a new package structure for `spring-boot-test` and deprecate
existing classes.

Fixes gh-5293
2016-03-23 22:17:27 -07:00
Phillip Webb da1e49703b Add JSONassert and JsonPath to the test starter
Update spring-boot-starter-test to include JSONassert and JsonPath.
Both are generally useful libraries when writing MVC tests.

Fixes gh-5469
2016-03-23 21:52:09 -07:00
Phillip Webb 47fb614bde Set "proxy target class" for transaction managers
Update `@EnableTransactionManagement` so that `proxyTargetClass` is
set to true. This ensures that @Transactional beans that aren't
interface based can still be proxied.

Fixes gh-5423
2016-03-23 21:52:09 -07:00
Phillip Webb 4352707eb3 Call afterProperties set in LogFileMvcEndpoint
Call afterPropertiesSet on the delegate `ResourceHttpRequestHandler`
to prevent an NPE. This change is required following SPR-13834.
2016-03-23 21:52:09 -07:00
Phillip Webb 1b6c2a3e5e Polish 2016-03-23 20:06:03 -07:00
Stephane Nicoll caa14e6be5 Polish 2016-03-23 17:38:20 +01:00
Andy Wilkinson 19d8c5e6f6 Complete the move to constructor injection in configuration classes
This is a follow-on from the work done in 5009933. Now that SPR-14015
has been fixed, constructor injection can also be used for parameterised
dependencies, including optional dependencies that are injected via
an ObjectProvider.

Closes gh-5306
2016-03-23 14:43:04 +00:00
Stephane Nicoll cb2ad7fb87 Prevent Thymeleaf to be configured with Thymeleaf 3
Spring Boot does not support Thymeleaf 3 yet. This commit prevents the
auto-configuration to activate if Thymeleaf 3 is available on the
classpath.

Closes gh-5371
2016-03-22 11:43:58 +01:00
Stephane Nicoll 93f392134a Polish 2016-03-22 11:35:02 +01:00
Phillip Webb 8d08e816a7 Fix tests that fail when Redis is unavailable 2016-03-21 23:11:04 -07:00
Phillip Webb 7942d9f787 Polish 2016-03-21 22:52:25 -07:00
Stephane Nicoll 2ae1435916 Polish 2016-03-21 15:43:27 +01:00
Stephane Nicoll 24f09e28c4 Prevent Redis to be initiated
This commit excludes the Redis auto-configuration that would attempt
to connect to a redis instance running at localhost otherwise.
2016-03-21 15:37:14 +01:00
Stephane Nicoll d8c972c27e Merge branch '1.3.x' 2016-03-21 11:56:21 +01:00
Stephane Nicoll b1b84a358d Fix Artemis embedded mode condition
This commit prevents the Artemis embedded mode to kick-in if the
`EmbeddedJMS` class it not in the classpath. The previous condition would
match if only `artemis-server` was on the classpath while
`artemis-jms-server` is actually required.

Closes gh-5452
2016-03-21 11:55:59 +01:00
Stephane Nicoll a243b3e177 Merge pull request #5455 from eddumelendez/gh-5448
* pr/5455:
  Polish contribution
  Auto-configure Redis repositories
2016-03-21 11:02:30 +01:00
Stephane Nicoll 96b7419916 Polish contribution
Closes gh-5455
2016-03-21 11:02:22 +01:00
Eddú Meléndez 2fc2ec457b Auto-configure Redis repositories
Closes gh-5448
2016-03-21 10:47:23 +01:00
Stephane Nicoll b8bc4f66e5 Align dependencies for Spring Data Hopper RC1
Align dependencies upgrade of the Hopper release.

Closes gh-5150
See gh-5443
2016-03-18 14:21:58 +01:00
Stephane Nicoll 29b4e381fa Upgrade to Spring Data Hopper RC1
Closes gh-5150
2016-03-18 13:24:47 +01:00
Stephane Nicoll 3109fd5034 Merge pull request #5417 from mdeinum/gh-5416
* pr/5417:
  Polish contribution
  Support setting webAllowOthers for the H2 Web Console
2016-03-18 13:06:05 +01:00
Stephane Nicoll bca83bde5b Polish contribution
Closes gh-5417
2016-03-18 13:05:44 +01:00
Marten Deinum ec8b94f13c Support setting webAllowOthers for the H2 Web Console
This commit adds a configuration option for the webAllowOthers option
for the H2 WebServlet. It will only be added it the
spring.h2.console.webAllowOthers is set to true, else it will be
ignored.

Closes gh-5416
2016-03-18 12:45:39 +01:00
Stephane Nicoll 52461b42ae Merge pull request #5372 from herau/fix/1598
* pr/5372:
  Polish contribution
  Improve ActiveMQ connection pool configuration
2016-03-18 11:23:44 +01:00