注释类型 IfProfileValue


  • @Target({TYPE,METHOD})
    @Retention(RUNTIME)
    @Documented
    @Inherited
    public @interface IfProfileValue
    Test annotation to indicate whether a test is enabled or disabled for a specific testing profile.

    In the context of this annotation, the term profile refers to a Java system property by default; however, the semantics can be changed by implementing a custom ProfileValueSource. If the configured ProfileValueSource returns a matching value() for the declared name(), the test will be enabled. Otherwise, the test will be disabled and effectively ignored.

    @IfProfileValue can be applied at the class level, the method level, or both. Class-level usage of @IfProfileValue takes precedence over method-level usage for any methods within that class or its subclasses. Specifically, a test is enabled if it is enabled both at the class level and at the method level; the absence of @IfProfileValue means the test is implicitly enabled. This is analogous to the semantics of JUnit's @Ignore annotation, except that the presence of @Ignore always disables a test.

    Example

    When using SystemProfileValueSource as the ProfileValueSource implementation (which is configured by default), you can configure a test method to run only on Java VMs from Oracle as follows:
     @IfProfileValue(name = "java.vendor", value = "Oracle Corporation")
     public void testSomething() {
         // ...
     }

    'OR' Semantics

    You can alternatively configure @IfProfileValue with OR semantics for multiple values(). The following test will be enabled if a ProfileValueSource has been appropriately configured for the "test-groups" profile with a value of either unit-testsorintegration-tests. This functionality is similar to TestNG's support for test groups and JUnit's experimental support for test categories.

     @IfProfileValue(name = "test-groups", values = { "unit-tests", "integration-tests" })
     public void testWhichRunsForUnitOrIntegrationTestGroups() {
         // ...
     }

    @IfProfileValue vs. @Profile

    Although the @IfProfileValue and @Profile annotations both involve profiles, they are not directly related. @Profile involves bean definition profiles configured in the Environment; whereas, @IfProfileValue is used to enable or disable tests.

    Meta-annotation Support

    As of Spring Framework 4.0, this annotation may be used as a meta-annotation to create custom composed annotations.

    从以下版本开始:
    2.0
    作者:
    Rod Johnson, Sam Brannen
    另请参阅:
    ProfileValueSource, SystemProfileValueSource, ProfileValueSourceConfiguration, ProfileValueUtils, AbstractJUnit4SpringContextTests, SpringJUnit4ClassRunner, ProfileValueChecker, Profile, ActiveProfiles
    • 必需元素概要

      所需元素 
      修饰符和类型必需的元素说明
      Stringname
      The name of the profile value against which to test.
    • 可选元素概要

      可选元素 
      修饰符和类型可选元素说明
      Stringvalue
      A single, permissible value of the profile value for the given name().
      String[]values
      A list of all permissible values of the profile value for the given name().
    • 元素详细资料

      • name

        String name
        The name of the profile value against which to test.
      • value

        String value
        A single, permissible value of the profile value for the given name().

        Note: Assigning values to both #value and values() will lead to a configuration conflict.

        默认值:
        ""
      • values

        String[] values
        A list of all permissible values of the profile value for the given name().

        Note: Assigning values to both value() and #values will lead to a configuration conflict.

        默认值:
        {}