| 
 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjunit.framework.Assert
junit.framework.TestCase
org.springframework.test.ConditionalTestCase
org.springframework.test.AbstractSpringContextTests
org.springframework.test.AbstractSingleSpringContextTests
org.springframework.test.AbstractDependencyInjectionSpringContextTests
org.springframework.test.AbstractTransactionalSpringContextTests
public abstract class AbstractTransactionalSpringContextTests
Convenient base class for JUnit 3.8 based tests that should occur in a transaction, but normally will roll the transaction back on the completion of each test.
This is useful in a range of circumstances, allowing the following benefits:
This class is typically very fast, compared to traditional setup/teardown scripts.
 If data should be left in the database, call the setComplete()
 method in each test. The "defaultRollback"
 property, which defaults to "true", determines whether transactions will
 complete by default.
 
 It is even possible to end the transaction early; for example, to verify lazy
 loading behavior of an O/R mapping tool. (This is a valuable away to avoid
 unexpected errors when testing a web UI, for example.) Simply call the
 endTransaction() method. Execution will then occur without a
 transactional context.
 
 The startNewTransaction() method may be called after a call to
 endTransaction() if you wish to create a new transaction, quite
 independent of the old transaction. The new transaction's default fate will
 be to roll back, unless setComplete() is called again during the
 scope of the new transaction. Any number of transactions may be created and
 ended in this way. The final transaction will automatically be rolled back
 when the test case is torn down.
 
 Transactional behavior requires a single bean in the context implementing the
 PlatformTransactionManager interface. This will be set by the
 superclass's Dependency Injection mechanism. If using the superclass's Field
 Injection mechanism, the implementation should be named "transactionManager".
 This mechanism allows the use of the
 AbstractDependencyInjectionSpringContextTests superclass even when
 there is more than one transaction manager in the context.
 
 This base class can also be used without transaction management, if no
 PlatformTransactionManager bean is found in the context provided. Be
 careful about using this mode, as it allows the potential to permanently
 modify data. This mode is available only if dependency checking is turned off
 in the AbstractDependencyInjectionSpringContextTests superclass. The
 non-transactional capability is provided to enable use of the same subclass
 in different environments.
| Field Summary | |
|---|---|
| protected  TransactionDefinition | transactionDefinitionTransaction definition used by this test class: by default, a plain DefaultTransactionDefinition. | 
| protected  PlatformTransactionManager | transactionManagerThe transaction manager to use | 
| protected  TransactionStatus | transactionStatusTransactionStatus for this test. | 
| Fields inherited from class org.springframework.test.AbstractDependencyInjectionSpringContextTests | 
|---|
| AUTOWIRE_BY_NAME, AUTOWIRE_BY_TYPE, AUTOWIRE_NO | 
| Fields inherited from class org.springframework.test.AbstractSingleSpringContextTests | 
|---|
| applicationContext | 
| Fields inherited from class org.springframework.test.ConditionalTestCase | 
|---|
| logger | 
| Constructor Summary | |
|---|---|
| AbstractTransactionalSpringContextTests()Default constructor for AbstractTransactionalSpringContextTests. | |
| AbstractTransactionalSpringContextTests(String name)Constructor for AbstractTransactionalSpringContextTests with a JUnit name. | |
| Method Summary | |
|---|---|
| protected  void | endTransaction()Immediately force a commit or rollback of the transaction, according to the completeandrollbackflags. | 
| protected  boolean | isDefaultRollback()Get the default rollback flag for this test. | 
| protected  boolean | isRollback()Determines whether or not to rollback transactions for the current test. | 
| protected  void | onSetUp()This implementation creates a transaction before test execution. | 
| protected  void | onSetUpBeforeTransaction()Subclasses can override this method to perform any setup operations, such as populating a database table, before the transaction created by this class. | 
| protected  void | onSetUpInTransaction()Subclasses can override this method to perform any setup operations, such as populating a database table, within the transaction created by this class. | 
| protected  void | onTearDown()This implementation ends the transaction after test execution. | 
| protected  void | onTearDownAfterTransaction()Subclasses can override this method to perform cleanup after a transaction here. | 
| protected  void | onTearDownInTransaction()Subclasses can override this method to run invariant tests here. | 
| protected  void | preventTransaction()Call this method in an overridden ConditionalTestCase.runBare()method to prevent
 transactional execution. | 
| protected  void | setComplete()Cause the transaction to commit for this test method, even if the test method is configured to rollback. | 
|  void | setDefaultRollback(boolean defaultRollback)Subclasses can set this value in their constructor to change the default, which is always to roll the transaction back. | 
| protected  void | setTransactionDefinition(TransactionDefinition customDefinition)Call this method in an overridden ConditionalTestCase.runBare()method to override
 the transaction attributes that will be used, so thatAbstractSingleSpringContextTests.setUp()andAbstractSingleSpringContextTests.tearDown()behavior is modified. | 
|  void | setTransactionManager(PlatformTransactionManager transactionManager)Specify the transaction manager to use. | 
| protected  void | startNewTransaction()Start a new transaction. | 
| Methods inherited from class org.springframework.test.AbstractDependencyInjectionSpringContextTests | 
|---|
| getAutowireMode, injectDependencies, isDependencyCheck, isPopulateProtectedVariables, prepareTestInstance, setAutowireMode, setDependencyCheck, setPopulateProtectedVariables | 
| Methods inherited from class org.springframework.test.AbstractSingleSpringContextTests | 
|---|
| contextKey, createApplicationContext, createBeanDefinitionReader, customizeBeanFactory, getApplicationContext, getConfigLocations, getConfigPath, getConfigPaths, getLoadCount, loadContext, loadContextLocations, prepareApplicationContext, setDirty, setUp, tearDown | 
| Methods inherited from class org.springframework.test.AbstractSpringContextTests | 
|---|
| addContext, contextKeyString, getContext, hasCachedContext, isContextKeyEmpty, setDirty | 
| Methods inherited from class org.springframework.test.ConditionalTestCase | 
|---|
| getDisabledTestCount, isDisabledInThisEnvironment, recordDisabled, runBare | 
| Methods inherited from class junit.framework.TestCase | 
|---|
| countTestCases, createResult, getName, run, run, runTest, setName, toString | 
| Methods inherited from class junit.framework.Assert | 
|---|
| assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, fail, fail, failNotEquals, failNotSame, failSame, format | 
| Methods inherited from class java.lang.Object | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | 
| Field Detail | 
|---|
protected PlatformTransactionManager transactionManager
protected TransactionDefinition transactionDefinition
protected TransactionStatus transactionStatus
| Constructor Detail | 
|---|
public AbstractTransactionalSpringContextTests()
public AbstractTransactionalSpringContextTests(String name)
| Method Detail | 
|---|
public void setTransactionManager(PlatformTransactionManager transactionManager)
 This mode works only if dependency checking is turned off in the
 AbstractDependencyInjectionSpringContextTests superclass.
protected boolean isDefaultRollback()
setDefaultRollback(boolean)public void setDefaultRollback(boolean defaultRollback)
protected boolean isRollback()
Determines whether or not to rollback transactions for the current test.
 The default implementation delegates to isDefaultRollback().
 Subclasses can override as necessary.
 
protected void preventTransaction()
ConditionalTestCase.runBare() method to prevent
 transactional execution.
protected void setTransactionDefinition(TransactionDefinition customDefinition)
ConditionalTestCase.runBare() method to override
 the transaction attributes that will be used, so that AbstractSingleSpringContextTests.setUp()
 and AbstractSingleSpringContextTests.tearDown() behavior is modified.
customDefinition - the custom transaction definition
protected void onSetUp()
                throws Exception
 Override onSetUpBeforeTransaction() and/or
 onSetUpInTransaction() to add custom set-up behavior for
 transactional execution. Alternatively, override this method for general
 set-up behavior, calling super.onSetUp() as part of your
 method implementation.
onSetUp in class AbstractSingleSpringContextTestsException - simply let any exception propagateonTearDown()
protected void onSetUpBeforeTransaction()
                                 throws Exception
preventTransaction() has not been invoked in an overridden
 TestCase.runTest() method.
Exception - simply let any exception propagate
protected void onSetUpInTransaction()
                             throws Exception
NB: Not called if there is no transaction management, due to no transaction manager being provided in the context.
 If any Throwable is thrown, the transaction that has been started
 prior to the execution of this method will be
 ended (or rather an attempt will be made to
 end it gracefully); The offending
 Throwable will then be rethrown.
Exception - simply let any exception propagate
protected void onTearDown()
                   throws Exception
 Override onTearDownInTransaction() and/or
 onTearDownAfterTransaction() to add custom tear-down behavior
 for transactional execution. Alternatively, override this method for
 general tear-down behavior, calling super.onTearDown() as
 part of your method implementation.
 
 Note that onTearDownInTransaction() will only be called if a
 transaction is still active at the time of the test shutdown. In
 particular, it will not be called if the transaction has been
 completed with an explicit endTransaction() call before.
onTearDown in class AbstractSingleSpringContextTestsException - simply let any exception propagateonSetUp()
protected void onTearDownInTransaction()
                                throws Exception
NB: Not called if there is no actual transaction, for example due to no transaction manager being provided in the application context.
Exception - simply let any exception propagate
protected void onTearDownAfterTransaction()
                                   throws Exception
Exception - simply let any exception propagateprotected void setComplete()
rollback.
IllegalStateException - if the operation cannot be set to complete
         as no transaction manager was providedprotected void endTransaction()
complete and rollback flags.
 Can be used to explicitly let the transaction end early, for example to check whether lazy associations of persistent objects work outside of a transaction (that is, have been initialized properly).
setComplete()
protected void startNewTransaction()
                            throws TransactionException
endTransaction() has been called. setComplete() can be
 used again in the new transaction. The fate of the new transaction, by
 default, will be the usual rollback.
TransactionException - if starting the transaction failed| 
 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||