@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.ActiveProfilesResolver
public 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()