- 04 2月, 2014 1 次提交
-
-
由 Sam Brannen 提交于
Prior to this commit several test classes named "*Test" were not recognized as tests by the Gradle build. This is due to the configured inclusion of '**/*Tests.*' which follows Spring's naming convention for test classes. This commit addresses this issue by: - Renaming real test classes consistently to "*Tests". - Renaming internal test classes to "*TestCase". - Renaming @WebTest to @WebTestStereotype. - Disabling broken tests in AnnoDrivenStaticEntityMockingControlTest. - Modifying the Gradle build configuration so that classes ending in either "*Tests" or "*Test" are considered test classes. Issue: SPR-11384
-
- 01 2月, 2014 1 次提交
-
-
由 Sam Brannen 提交于
SPR-11145 claims that ServletContextAware beans declared in an ApplicationContext loaded for an integration test by the TestContext framework (TCF) do not have their setServletContext() methods invoked if the tests are executed manually using JUnit 4.11. This commit verifies that such ServletContextAware beans are processed properly regardless of how the test was launched. Specifically: - A ServletContextAwareBean has been introduced. - BasicAnnotationConfigWacTests has been retrofitted with a ServletContextAwareBean in its context. - ServletContextAwareBeanWacTests has been introduced to execute BasicAnnotationConfigWacTests manually via JUnitCore. Issue: SPR-11145
-
- 23 1月, 2014 1 次提交
-
-
由 Sam Brannen 提交于
This commit deletes methods in RollbackForRequiredEjbTxDaoTestNGTests that were unnecessarily redeclared. The redeclaration is required for JUnit's @FixMethodOrder support but not for TestNG's built-in support for dependent methods. Issue: SPR-6132
-
- 22 1月, 2014 1 次提交
-
-
由 Sam Brannen 提交于
This commit introduces transactional integration tests executing against both JUnit and TestNG in the TestContext framework (TCF) using @TransactionAttribute in EJBs instead of Spring’s @Transactional annotation. These tests disprove the claims raised in SPR-6132 by demonstrating that transaction support in the TCF works as expected when a transactional EJB method that is configured with TransactionAttribute.REQUIRES_NEW is invoked. Specifically: - The transaction managed by the TCF is suspended while such an EJB method is invoked. - Any work performed within the new transaction for the EJB method is committed after the method invocation completes. - The transaction managed by the TCF is resumed and subsequently either rolled back or committed as necessary based on the configuration of @Rollback and @TransactionConfiguration. The configuration for the JUnit-based tests is straightforward and self explanatory; however, the configuration for the TestNG tests is less intuitive. In order for the TCF to function properly, the developer must ensure that test methods within a given TestNG test (whether defined locally, in a superclass, or somewhere else in the suite) are executed in the proper order. In a stand-alone test class this is straightforward; however, in a test class hierarchy (or test suite) with dependent methods, it is necessary to configure TestNG so that all methods within an individual test are executed in isolation from test methods in other tests. This can be achieved by configuring a test class to run in its own uniquely identified suite (e.g., by annotating each concrete TestNG-based test class with @test(suiteName = "< Some Unique Suite Name >")). For example, without specifying a unique suite name for the TestNG tests introduced in this commit, test methods will be executed in the following (incorrect) order: - CommitForRequiredEjbTxDaoTestNGTests.test1InitialState() - CommitForRequiresNewEjbTxDaoTestNGTests.test1InitialState() - RollbackForRequiresNewEjbTxDaoTestNGTests.test1InitialState() - RollbackForRequiredEjbTxDaoTestNGTests.test1InitialState() - CommitForRequiredEjbTxDaoTestNGTests.test2IncrementCount1() The reason for this ordering is that test2IncrementCount1() depends on test1InitialState(); however, the intention of the developer is that the tests for an individual test class are independent of those in other test classes. So by specifying unique suite names for each test class, the following (correct) ordering is achieved: - RollbackForRequiresNewEjbTxDaoTestNGTests.test1InitialState() - RollbackForRequiresNewEjbTxDaoTestNGTests.test2IncrementCount1() - RollbackForRequiresNewEjbTxDaoTestNGTests.test3IncrementCount2() - CommitForRequiredEjbTxDaoTestNGTests.test1InitialState() - CommitForRequiredEjbTxDaoTestNGTests.test2IncrementCount1() - CommitForRequiredEjbTxDaoTestNGTests.test3IncrementCount2() - RollbackForRequiredEjbTxDaoTestNGTests.test1InitialState() - RollbackForRequiredEjbTxDaoTestNGTests.test2IncrementCount1() - RollbackForRequiredEjbTxDaoTestNGTests.test3IncrementCount2() - CommitForRequiresNewEjbTxDaoTestNGTests.test1InitialState() - CommitForRequiresNewEjbTxDaoTestNGTests.test2IncrementCount1() - CommitForRequiresNewEjbTxDaoTestNGTests.test3IncrementCount2() See the JIRA issue for more detailed log output. Furthermore, @DirtiesContext(classMode = ClassMode.AFTER_CLASS) has been used in both the JUnit and TestNG tests introduced in this commit in order to ensure that the in-memory database is reinitialized between each test class. Issue: SPR-6132
-
- 21 1月, 2014 1 次提交
-
-
由 Sam Brannen 提交于
The ServletTestExecutionListener is now prepended to the set of default listeners in AbstractJUnit4SpringContextTests and AbstractTestNGSpringContextTests. Issue: SPR-11340
-
- 15 1月, 2014 2 次提交
-
-
由 Sam Brannen 提交于
-
由 Rossen Stoyanchev 提交于
When adding headers generically, MockHttpServletRequestBuilder now recognizes Content-Type and updates the contentType field accordingly. Issue: SPR-11308
-
- 06 1月, 2014 2 次提交
-
-
由 Sam Brannen 提交于
-
由 Sam Brannen 提交于
Suppressing deprecation warnings for MockHttpServletResponse.setStatus(int, String).
-
- 03 1月, 2014 1 次提交
-
-
由 Brian Clozel 提交于
Prior to this commit, some unit tests were using Spring's Jackson 1.x implementations. Now Jackson 2.x implementations are the default ones used in unit tests. Even if Jackson 1.x support is deprecated, Jackson 1.x unit tests are kept. Issue: SPR-11121
-
- 24 12月, 2013 1 次提交
-
-
由 Rossen Stoyanchev 提交于
This change splits out an abstract base class from DefaultMockMvcBuilder with StandaloneMockMvcBuilder switching to extend the new abstract class (rather than DefaultMockMvcBuilder). Issue: SPR-11238
-
- 11 12月, 2013 4 次提交
-
-
由 Sam Brannen 提交于
- Completed Javadoc for MetaAnnotationUtils. - Added Javadoc notes to multiple annotations in the TCF, pointing out which annotations can be used as meta-annotations. Issue: SPR-11109
-
由 Sam Brannen 提交于
-
由 Sam Brannen 提交于
This commit fixes a bug introduced in the last commit. ServletTestExecutionListener (STEL) now tracks whether it has already populated the RequestContextHolder. Issue: SPR-11144
-
由 Sam Brannen 提交于
The previous commit for issue SPR-11144 revealed a bug in ServletTestExecutionListener (STEL). Specifically, STEL acted on the fact that the ApplicationContext for a given TestContext was an instance of WebApplicationContext. This behavior could potentially break test code from previous releases of the Spring Framework that relied on a custom setup of the RequestAttributes in the RequestContextHolder with a custom WebApplicationContext ContextLoader. This commit addresses this issue by ensuring that STEL only comes into play if the test class is annotated with @WebAppConfiguration (for prepareTestInstance() and beforeTestMethod()) or if the TestContext attribute named RESET_REQUEST_CONTEXT_HOLDER_ATTRIBUTE is set to Boolean.TRUE (for afterTestMethod()). Issue: SPR-11144
-
- 09 12月, 2013 1 次提交
-
-
由 Sam Brannen 提交于
Prior to this commit, the ServletTestExecutionListener did not overwrite RequestAttributes in the RequestContextHolder if the ApplicationContext associated with the given TestContext was not a WebApplicationContext; however, the ServletTestExecutionListener would clear the RequestAttributes after every test method execution, regardless of whether the context was a WebApplicationContext or not. This behavior breaks backwards compatibility with integration tests that managed the RequestAttributes in RequestContextHolder themselves. This commit addresses this issue by introducing a TestContext attribute named RESET_REQUEST_CONTEXT_HOLDER_ATTRIBUTE in ServletTestExecutionListener. This attribute is used internally within ServletTestExecutionListener to ensure that the RequestContextHolder is only cleared (i.e., reset) if the ServletTestExecutionListener actually populated the RequestContextHolder. Issue: SPR-11144
-
- 03 12月, 2013 1 次提交
-
-
由 Phillip Webb 提交于
-
- 27 11月, 2013 2 次提交
-
-
由 Phillip Webb 提交于
Update code to have a consistent number of new-line characters after import statements.
-
由 Sam Brannen 提交于
Prior to this commit, the Spring TestContext Framework (TCF) supported the use of test-related annotations as meta-annotations for composing custom test stereotype annotations; however, attributes in custom stereotypes could not be used to override meta-annotation attributes. This commit addresses this by allowing attributes from the following annotations (when used as meta-annotations) to be overridden in custom stereotypes. - @ContextConfiguration - @ActiveProfiles - @DirtiesContext - @TransactionConfiguration - @Timed - @TestExecutionListeners This support depends on functionality provided by AnnotatedElementUtils. See the 'Notes' below for further details and ramifications. Notes: - AnnotatedElementUtils does not support overrides for the 'value' attribute of an annotation. It is therefore not possible or not feasible to support meta-annotation attribute overrides for some test-related annotations. - @ContextHierarchy, @WebAppConfiguration, @Rollback, @Repeat, and @ProfileValueSourceConfiguration define single 'value' attributes which cannot be overridden via Spring's meta-annotation attribute support. - Although @IfProfileValue has 'values' and 'name' attributes, the typical usage scenario involves the 'value' attribute which is not supported for meta-annotation attribute overrides. Furthermore, 'name' and 'values' are so generic that it is deemed unfeasible to provide meta-annotation attribute override support for these. - @BeforeTransaction and @AfterTransaction do not define any attributes that can be overridden. - Support for meta-annotation attribute overrides for @Transactional is provided indirectly via SpringTransactionAnnotationParser. Implementation Details: - MetaAnnotationUtils.AnnotationDescriptor now provides access to the AnnotationAttributes for the described annotation. - MetaAnnotationUtils.AnnotationDescriptor now provides access to the root declaring class as well as the declaring class. - ContextLoaderUtils now retrieves AnnotationAttributes from AnnotationDescriptor to look up annotation attributes for @ContextConfiguration and @ActiveProfiles. - ContextConfigurationAttributes now provides a constructor to have its attributes sourced from an instance of AnnotationAttributes. - ContextLoaderUtils.resolveContextHierarchyAttributes() now throws an IllegalStateException if no class in the class hierarchy declares @ContextHierarchy. - TransactionalTestExecutionListener now uses AnnotatedElementUtils to look up annotation attributes for @TransactionConfiguration. - Implemented missing unit tests for @Rollback resolution in TransactionalTestExecutionListener. - SpringJUnit4ClassRunner now uses AnnotatedElementUtils to look up annotation attributes for @Timed. - TestContextManager now retrieves AnnotationAttributes from AnnotationDescriptor to look up annotation attributes for @TestExecutionListeners. - DirtiesContextTestExecutionListener now uses AnnotatedElementUtils to look up annotation attributes for @DirtiesContext. Issue: SPR-11038
-
- 22 11月, 2013 2 次提交
-
-
由 Sam Brannen 提交于
-
由 Phillip Webb 提交于
Replace `hsqldb:hsqldb:1.8.0.10` with `org.hsqldb:hsqldb:2.3.1` and fix breaking tests. Issue: SPR-10947
-
- 06 11月, 2013 1 次提交
-
-
由 Rossen Stoyanchev 提交于
With spring-test compiling against Servlet 3.0 it is no longer required to compile Spring MVC Test sources separately (from spring-test).
-
- 28 10月, 2013 3 次提交
-
-
由 Sam Brannen 提交于
@WebTests has been renamed to @WebTest so that the Gradle build does not attempt to run it as a JUnit test.
-
由 Sam Brannen 提交于
-
由 Sam Brannen 提交于
Spring 3.0 already allows component stereotypes to be used in a meta-annotation fashion, for example by creating a custom @TransactionalService stereotype annotation which combines @Transactional and @Service in a single, reusable, application-specific annotation. However, the Spring TestContext Framework (TCF) currently does not provide any support for test-related annotations to be used as meta-annotations. This commit overhauls the TCF with regard to how annotations are retrieved and adds explicit support for the following annotations to be used as meta-annotations in conjunction with the TCF. - @ContextConfiguration - @ContextHierarchy - @ActiveProfiles - @DirtiesContext - @IfProfileValue - @ProfileValueSourceConfiguration - @BeforeTransaction - @AfterTransaction - @TransactionConfiguration - @Rollback - @TestExecutionListeners - @Repeat - @Timed - @WebAppConfiguration Note that meta-annotation support for @Transactional was already available prior to this commit. The following is a summary of the major changes included in this commit. - Now using AnnotationUtils.getAnnotation() instead of Class.getAnnotation() where appropriate in the TestContext Framework. - Now using AnnotationUtils.findAnnotation() instead of Class.isAnnotationPresent() where appropriate in the TestContext Framework. - Introduced findAnnotationPrefersInteracesOverLocalMetaAnnotations() in AnnotationUtilsTests in order to verify the status quo. - AnnotationUtils.findAnnotationDeclaringClass() and AnnotationUtils.findAnnotationDeclaringClassForTypes() now support meta annotations. - Introduced MetaAnnotationUtils and AnnotationDescriptor in the spring-test module. - Introduced UntypedAnnotationDescriptor in MetaAnnotationUtils. - Introduced findAnnotationDescriptorForTypes() in MetaAnnotationUtils. - ContextLoaderUtils now uses MetaAnnotationUtils for looking up @ActiveProfiles as a potential meta-annotation. - TestContextManager now uses MetaAnnotationUtils for looking up @TestExecutionListeners as a potential meta-annotation. - DirtiesContextTestExecutionListener now uses AnnotationUtils for looking up @DirtiesContext as a potential meta-annotation. - Introduced DirtiesContextTestExecutionListenerTests. - ProfileValueUtils now uses AnnotationUtils for looking up @IfProfileValue and @ProfileValueSourceConfiguration as potential meta-annotations. - @BeforeTransaction and @AfterTransaction now support ANNOTATION_TYPE as a target, allowing them to be used as meta-annotations. - TransactionalTestExecutionListener now uses AnnotationUtils for looking up @BeforeTransaction, @AfterTransaction, @Rollback, and @TransactionConfiguration as potential meta-annotations. - Introduced TransactionalTestExecutionListenerTests. - @Repeat and @Timed now support ANNOTATION_TYPE as a target, allowing them to be used as meta-annotations. - SpringJUnit4ClassRunner now uses AnnotationUtils for looking up @Repeat and @Timed as potential meta-annotations. - Moved all remaining logic for building the MergedContextConfiguration from the DefaultTestContext constructor to ContextLoaderUtils.buildMergedContextConfiguration(). - Verified meta-annotation support for @WebAppConfiguration and @ContextConfiguration. Issue: SPR-7827
-
- 27 10月, 2013 1 次提交
-
-
由 Sam Brannen 提交于
Since the Spring TestContext Framework was introduced in Spring Framework 2.5, the TestContext class has always been a public class with package private constructors. The visibility of TestContext's constructor and methods was intentionally limited in order to hide the implementation details of the context cache, etc. However, this fact has made it difficult (if not impossible) to unit test custom TestExecutionListener implementations. This commit addresses this issue by converting TestContext into a public interface with a package private DefaultTestContext implementation. This enables unit testing of any components that depend on a TestContext (e.g., TestExecutionListeners) while at the same time preserving the encapsulation of the inner workings of the TestContext implementation with regard to context loading and caching. Issue: SPR-7692
-
- 22 10月, 2013 1 次提交
-
-
由 Sam Brannen 提交于
Prior to this commit, the uniqueness check for @ContextConfiguration attributes within a @ContextHierarchy was performed at a single test class level instead of against the merged configuration for all test class levels in the test class hierarchy. This commit addresses this issue by moving the uniqueness check algorithm from resolveContextHierarchyAttributes() to buildContextHierarchyMap() within ContextLoaderUtils. Issue: SPR-10997
-
- 08 10月, 2013 1 次提交
-
-
由 Brian Clozel 提交于
Prior to this commit, one could call the setStatus method on this Mock object and update the response's status, even though the sendError method had already been called. According to the HttpServletResponse Javadoc, sendError() methods commit the response; so the response can't be written after that. This commit fixes MockHttpServletResponse's behavior; setStatus methods do not update the status once the response has been committed. Issue: SPR-10414
-
- 25 9月, 2013 1 次提交
-
-
由 Juergen Hoeller 提交于
Issue: SPR-10902 (cherry picked from commit ef66708a)
-
- 12 9月, 2013 1 次提交
-
-
由 Sam Brannen 提交于
This commit undoes the changes made in ec5d81e7 and ensures that the getRequestURL() method in MockHttpServletRequest does not include the String "null" for a null requestURI by first checking if the requestURI contains text before including it in the composed URL. Issue: SPR-10643
-
- 17 6月, 2013 3 次提交
-
-
由 Sam Brannen 提交于
This commit deletes the remaining JUnit 3.8 tests in the spring-test module that were still subclassing deprecated class hierarchies. Issue: SPR-10499
-
由 Sam Brannen 提交于
This commit relocates MockMultipartHttpServletRequestTests to the appropriate package.
-
由 Sam Brannen 提交于
-
- 16 6月, 2013 2 次提交
-
-
由 Sam Brannen 提交于
This commit refactors ContextLoaderUtilsTests into AbstractContextLoaderUtilsTests and several specialized subclasses in order to reduce to the growing complexity of ContextLoaderUtilsTests.
-
由 Sam Brannen 提交于
Prior to this commit, the active bean definition profiles to use when loading an ApplicationContext for tests could only be configured declaratively (i.e., via hard-coded values supplied to the 'value' or 'profiles' attribute of @ActiveProfiles). This commit makes it possible to programmatically configure active bean definition profiles in tests via a new ActiveProfileResolver interface. Custom resolvers can be registered via a new 'resolver' attribute introduced in @ActiveProfiles. Overview of changes: - Introduced a new ActiveProfilesResolver API. - Added a 'resolver' attribute to @ActiveProfiles. - Updated ContextLoaderUtils.resolveActiveProfiles() to support ActiveProfilesResolvers. - Documented these new features in the reference manual. - Added new content to the reference manual regarding the 'inheritProfiles' attribute of @ActiveProfiles - Removed the use of <lineannotation> Docbook markup in the testing chapter of the reference manual for Java code examples in order to allow comments to have proper syntax highlighting in the generated HTML and PDF. Issue: SPR-10338
-
- 09 6月, 2013 4 次提交
-
-
由 Sam Brannen 提交于
The Javadoc for several methods in HttpSession specifies that an IllegalStateException must be thrown if the method is called on an invalidated session; however, Spring's MockHttpSession did not implement this behavior consistently prior to this commit. This commit therefore ensures that the following methods in MockHttpSession properly throw an IllegalStateException as defined in the Servlet specification. - long getCreationTime() - long getLastAccessedTime() - Object getAttribute(String) - Object getValue(String) - Enumeration<String> getAttributeNames() - String[] getValueNames() - void setAttribute(String, Object) - void putValue(String , Object) - void removeAttribute(String) - void removeValue(String) - void invalidate() - boolean isNew() Issue: SPR-7659
-
由 Sam Brannen 提交于
Prior to this commit, MockHttpServletRequest.getRequestURL() always included the server port number in the reconstructed request URL, even for implicit ports (i.e., 80 and 443) and negative ports. MockHttpServletRequest.getRequestURL() now omits the port number when reconstructing a URL that has an implicit or negative port. Issue: SPR-9726
-
由 Sam Brannen 提交于
This commit verifies that JdbcTestUtils.readScript() properly handles SQL comments prefixed by tab characters. Issue: SPR-10330
-
由 Sam Brannen 提交于
-
- 14 5月, 2013 1 次提交
-
-
由 Rob Winch 提交于
Issue: SPR-10130
-