From 347264e4d99e078aac5a55363bb21d12377a4d33 Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Fri, 22 May 2015 22:53:14 +0200 Subject: [PATCH] Add "Testing Improvements" to new-in-4.2 section --- src/asciidoc/whats-new.adoc | 56 +++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/src/asciidoc/whats-new.adoc b/src/asciidoc/whats-new.adoc index ffae023e514..6b421eafee6 100644 --- a/src/asciidoc/whats-new.adoc +++ b/src/asciidoc/whats-new.adoc @@ -387,6 +387,8 @@ method has been added. common setup for any 3rd party framework or within a project. * `MockRestServiceServer` now supports the `AsyncRestTemplate` for client-side testing. + + [[new-in-4.2]] == New Features and Enhancements in Spring Framework 4.2 @@ -408,6 +410,12 @@ method has been added. * Support for Apache `commons-pool2` * `javax.transaction.Transactional` support in AspectJ +=== JDBC Improvements + +* Embedded databases can now be automatically assigned unique names, and + `` supports a new `database-name` attribute. + See "Testing Improvements" below for further details. + === JMS Improvements * The `autoStartup` attribute can be controlled via `JmsListenerContainerFactory`. @@ -452,3 +460,51 @@ method has been added. * `ListenableFuture` and `CompletableFuture` as return value types from `@MessageMapping` and `@SubscribeMapping` methods. * `MarshallingMessageConverter` for XML payloads. + +=== Testing Improvements + +* JUnit-based integration tests can now be executed with JUnit rules + instead of the `SpringJUnit4ClassRunner`. This allows Spring-based + integration tests to be run with alternative runners like JUnit's + `Parameterized` or third-party runners such as the + `MockitoJUnitRunner`. +** Spring JUnit rule configuration requires the following two rules. +[source,java,indent=0] +[subs="verbatim,quotes"] +---- + @ClassRule + public static final SpringClassRule SPRING_CLASS_RULE = new SpringClassRule(); + + @Rule + public final SpringMethodRule springMethodRule = new SpringMethodRule(); +---- +* The `ContextCache` that is used for caching ++ApplicationContext++s + between tests is now a public API with a default implementation that + can be replaced for custom caching needs. +* `DefaultTestContext`, `DefaultBootstrapContext`, and + `DefaultCacheAwareContextLoaderDelegate` are now public classes in the + `support` subpackage, allowing for custom extensions. +* ++TestContextBootstrapper++s are now responsible for building the + `TestContext`. +* `ReflectionTestUtils` now supports setting and getting `static` fields, + including constants. +* `@DirtiesContext` supports new `BEFORE_METHOD`, `BEFORE_CLASS`, and + `BEFORE_EACH_TEST_METHOD` modes for closing the `ApplicationContext` + _before_ a test -- for example, if some rogue (i.e., yet to be + determined) test within a large test suite has corrupted the original + configuration for the `ApplicationContext`. +* The JDBC XML namespace supports a new `database-name` attribute in + ``, allowing developers to set unique names + for embedded databases –- for example, via a SpEL expression or a + property placeholder that is influenced by the current active bean + definition profiles. +* Embedded databases can now be automatically assigned a unique name, + allowing common test database configuration to be reused in different + ++ApplicationContext++s within a test suite. This support can be enabled + via: +** `EmbeddedDatabaseFactory.setGenerateUniqueDatabaseName()` +** `EmbeddedDatabaseBuilder.generateUniqueName()` +** `` +* `AopTestUtils` is a new testing utility that allows developers to + obtain a reference to the underlying target object hidden behind one + or more Spring proxies.