@Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Inherited public @interface ActiveProfiles
ActiveProfiles is a class-level annotation that is used to declare
which active bean definition profiles should be used when loading
an ApplicationContext
for test classes.
This annotation may be used as a meta-annotation to create custom composed annotations.
As of Spring Framework 5.3, this annotation will be inherited from an
enclosing test class by default. See
@NestedTestConfiguration for details.
SmartContextLoader,
MergedContextConfiguration,
ContextConfiguration,
ActiveProfilesResolver,
ApplicationContext,
Profile| Modifier and Type | Optional Element and Description |
|---|---|
boolean |
inheritProfiles
Whether bean definition profiles from superclasses and enclosing
classes should be inherited.
|
String[] |
profiles
The bean definition profiles to activate.
|
Class<? extends ActiveProfilesResolver> |
resolver
The type of
ActiveProfilesResolver to use for resolving the active
bean definition profiles programmatically. |
String[] |
value
Alias for
profiles(). |
@AliasFor(value="profiles") public abstract String[] value
profiles().
This attribute may not be used in conjunction with
profiles(), but it may be used instead of profiles().
public abstract Class<? extends ActiveProfilesResolver> resolver
ActiveProfilesResolver to use for resolving the active
bean definition profiles programmatically.ActiveProfilesResolverpublic abstract boolean inheritProfiles
The default value is true, which means that a test class will
inherit bean definition profiles defined by a test superclass or
enclosing class. Specifically, the bean definition profiles for a test
class will be appended to the list of bean definition profiles defined by
a test superclass or enclosing class. Thus, subclasses and nested classes
have the option of extending the list of bean definition profiles.
If inheritProfiles is set to false, the bean definition
profiles for the test class will shadow and effectively replace
any bean definition profiles defined by a superclass or enclosing class.
In the following example, the ApplicationContext for
BaseTest will be loaded using only the "base"
bean definition profile; beans defined in the "extended" profile
will therefore not be loaded. In contrast, the ApplicationContext
for ExtendedTest will be loaded using the "base"
and "extended" bean definition profiles.
@ActiveProfiles("base")
@ContextConfiguration
public class BaseTest {
// ...
}
@ActiveProfiles("extended")
@ContextConfiguration
public class ExtendedTest extends BaseTest {
// ...
}
Note: @ActiveProfiles can be used when loading an
ApplicationContext from path-based resource locations or
annotated classes.
ContextConfiguration.locations(),
ContextConfiguration.classes(),
ContextConfiguration.inheritLocations()