org.springframework.test.context.testng

## Class AbstractTestNGSpringContextTests

- java.lang.Object
- - org.springframework.test.context.testng.AbstractTestNGSpringContextTests

All Implemented Interfaces:
  Aware, ApplicationContextAware, org.testng.IHookable, org.testng.ITestNGListener

Direct Known Subclasses:
  AbstractTransactionalTestNGSpringContextTests

    @TestExecutionListeners(value={DependencyInjectionTestExecutionListener.class,DirtiesContextTestExecutionListener.class})
    public abstract class AbstractTestNGSpringContextTests
    extends Object
    implements org.testng.IHookable, ApplicationContextAware

Abstract base test class which integrates the Spring TestContext Framework with explicit `ApplicationContext` testing support in a TestNG environment.

Concrete subclasses:

- Typically declare a class-level `@ContextConfiguration` annotation to configure the `application context` `resource locations` or `annotated classes`. If your test does not need to load an application context, you may choose to omit the `@ContextConfiguration` declaration and to configure the appropriate `TestExecutionListeners` manually.
- Must have constructors which either implicitly or explicitly delegate to `super();`.

Since:
  2.5
Author:
  Sam Brannen, Juergen Hoeller
See Also:
  `TestContext`, `TestContextManager`, `TestExecutionListeners`, `AbstractTransactionalTestNGSpringContextTests`, `AbstractJUnit4SpringContextTests`

### Field Summary

Fields
`protected ApplicationContext` `applicationContext` The `ApplicationContext` that was injected into this test instance via `setApplicationContext(ApplicationContext)`.
`protected Log` `logger` Logger available to subclasses

### Constructor Summary

Constructors
Constructor and Description
`AbstractTestNGSpringContextTests()` Construct a new AbstractTestNGSpringContextTests instance and initialize the internal `TestContextManager` for the current test.

### Method Summary

Methods
`void` `run(org.testng.IHookCallBack callBack, org.testng.ITestResult testResult)` Delegates to the `test method` in the supplied `callback` to execute the actual test and then tracks the exception thrown during test execution, if any.
`void` `setApplicationContext(ApplicationContext applicationContext)` Set the `ApplicationContext` to be used by this test instance, provided via `ApplicationContextAware` semantics.
`protected void` `springTestContextAfterTestClass()` Delegates to the configured `TestContextManager` to call `'after test class'` callbacks.
`protected void` `springTestContextAfterTestMethod(Method testMethod)` Delegates to the configured `TestContextManager` to `post-process` the test method after the actual test has executed.
`protected void` `springTestContextBeforeTestClass()` Delegates to the configured `TestContextManager` to call `'before test class'` callbacks.
`protected void` `springTestContextBeforeTestMethod(Method testMethod)` Delegates to the configured `TestContextManager` to `pre-process` the test method before the actual test is executed.
`protected void` `springTestContextPrepareTestInstance()` Delegates to the configured `TestContextManager` to `prepare` this test instance prior to execution of any individual tests, for example for injecting dependencies, etc.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### logger

    protected final Log logger

Logger available to subclasses

#### applicationContext

    protected ApplicationContext applicationContext

The `ApplicationContext` that was injected into this test instance via `setApplicationContext(ApplicationContext)`.

### Constructor Detail

#### AbstractTestNGSpringContextTests

    public AbstractTestNGSpringContextTests()

Construct a new AbstractTestNGSpringContextTests instance and initialize the internal `TestContextManager` for the current test.

### Method Detail

#### setApplicationContext

    public final void setApplicationContext(ApplicationContext applicationContext)

Set the `ApplicationContext` to be used by this test instance, provided via `ApplicationContextAware` semantics.

Specified by:
  `setApplicationContext` in interface `ApplicationContextAware`
Parameters:
  `applicationContext` - the applicationContext to set
See Also:
  `BeanInitializationException`

#### springTestContextBeforeTestClass

    protected void springTestContextBeforeTestClass()
                                             throws Exception

Delegates to the configured `TestContextManager` to call `'before test class'` callbacks.

Throws:
  `Exception` - if a registered TestExecutionListener throws an exception

#### springTestContextPrepareTestInstance

    protected void springTestContextPrepareTestInstance()
                                                 throws Exception

Delegates to the configured `TestContextManager` to `prepare` this test instance prior to execution of any individual tests, for example for injecting dependencies, etc.

Throws:
  `Exception` - if a registered TestExecutionListener throws an exception

#### springTestContextBeforeTestMethod

    protected void springTestContextBeforeTestMethod(Method testMethod)
                                              throws Exception

Delegates to the configured `TestContextManager` to `pre-process` the test method before the actual test is executed.

Parameters:
  `testMethod` - the test method which is about to be executed.
Throws:
  `Exception` - allows all exceptions to propagate.

#### run

    public void run(org.testng.IHookCallBack callBack,
           org.testng.ITestResult testResult)

Delegates to the `test method` in the supplied `callback` to execute the actual test and then tracks the exception thrown during test execution, if any.

Specified by:
  `run` in interface `org.testng.IHookable`
See Also:
  `IHookable.run(org.testng.IHookCallBack, org.testng.ITestResult)`

#### springTestContextAfterTestMethod

    protected void springTestContextAfterTestMethod(Method testMethod)
                                             throws Exception

Delegates to the configured `TestContextManager` to `post-process` the test method after the actual test has executed.

Parameters:
  `testMethod` - the test method which has just been executed on the test instance
Throws:
  `Exception` - allows all exceptions to propagate

#### springTestContextAfterTestClass

    protected void springTestContextAfterTestClass()
                                            throws Exception

Delegates to the configured `TestContextManager` to call `'after test class'` callbacks.

Throws:
  `Exception` - if a registered TestExecutionListener throws an exception