Las siguientes anotaciones se admiten cuando se usan en combinación con SpringExtension
y JUnit Jupiter (es decir, el modelo de programación en JUnit 5):
@SpringJUnitConfig
@SpringJUnitConfig
es una
anotación compuesta que combina @ExtendWith(SpringExtension.class)
de JUnit Jupiter con @ContextConfiguration
de Spring TestContext Framework. Se puede utilizar a nivel de clase como reemplazo de
@ContextConfiguration
. En cuanto a las opciones de configuración, la única diferencia entre las
anotaciones @ContextConfiguration
y @SpringJUnitConfig
es que en la anotación
@SpringJUnitConfig, las clases de componentes se pueden declarar con un atributo value
El siguiente ejemplo muestra cómo utilizar la anotación @SpringJUnitConfig
para especificar una clase
de configuración:
@SpringJUnitConfig(TestConfig.class)
class ConfigurationClassJUnitJupiterSpringTests {
// cuerpo de clase...
}
- Establezca la clase de configuración.
@SpringJUnitConfig(TestConfig::class)
class ConfigurationClassJUnitJupiterSpringTests {
// cuerpo de clase...
}
- Establezca la clase de configuración.
El siguiente ejemplo muestra cómo utilizar el @SpringJUnitConfig
anotación para establecer la
ubicación del archivo de configuración:
@SpringJUnitConfig(locations = "/test-config.xml")
class XmlJUnitJupiterSpringTests {
// cuerpo de clase...
}
- Establezca la ubicación del archivo de configuración.
@SpringJUnitConfig(locations = ["/test-config.xml"])
class XmlJUnitJupiterSpringTests {
// cuerpo de clase...
}
- Establezca la ubicación del archivo de configuración.
Para obtener más información, consulte "Context Management", así como en
el javadoc en @SpringJUnitConfig
y @ContextConfiguration
.
@SpringJUnitWebConfig
@SpringJUnitWebConfig
es una
anotación compuesta que combina la anotación @ExtendWith(SpringExtension.class)
de JUnit Jupiter con
las anotaciones @ContextConfiguration
y @WebAppConfiguration
de Spring Marco de contexto
de prueba. Se puede utilizar a nivel de clase como reemplazo de las anotaciones @ContextConfiguration
y
@WebAppConfiguration
. En cuanto a las opciones de configuración, la única diferencia entre las
anotaciones @ContextConfiguration
y @SpringJUnitWebConfig
es que en la anotación @SpringJUnitWebConfig
,
las clases de componentes se pueden declarar con utilizando el atributo value
. Además, el atributo de
valor de la anotación @WebAppConfiguration
solo se puede anular utilizando el atributo ResourcePath en
la anotación @SpringJUnitWebConfig
.
El siguiente ejemplo muestra cómo utilizar la anotación
@SpringJUnitWebConfig
para establecer la clase de configuración:
@SpringJUnitWebConfig(TestConfig.class)
class ConfigurationClassJUnitJupiterSpringWebTests {
// cuerpo de la clase...
}
- Establece la clase de configuración.
@SpringJUnitWebConfig(TestConfig::class)
class ConfigurationClassJUnitJupiterSpringWebTests {
// cuerpo de la clase...
}
- Establecer la clase de configuración.
El siguiente ejemplo muestra cómo utilizar la anotación @SpringJUnitWebConfig
para establecer la
ubicación del archivo de configuración. :
@SpringJUnitWebConfig(locations = "/test-config.xml")
class XmlJUnitJupiterSpringWebTests {
// cuerpo de la clase...
}
- Establezca el ubicación del archivo de configuración.
@SpringJUnitWebConfig(locations = ["/test-config.xml"])
class XmlJUnitJupiterSpringWebTests {
// cuerpo de la clase...
}
- Establezca la ubicación del archivo de configuración.
Para obtener más información, consulte "Context
Management", así como en javadoc en @SpringJUnitWebConfig
, @ContextConfiguration
y @WebAppConfiguration
.
@TestConstructor
@TestConstructor
es una anotación de nivel de tipo que se
utiliza para configurar cómo los parámetros del constructor de la clase de prueba se determinarán y vincularán
automáticamente desde los componentes en el ApplicationContext
de la prueba.
Si la anotación
@TestConstructor
no está presente o está presente a través de una metaanotación en la clase de prueba,
se utilizará el modo de enlace y detección del constructor de pruebas predeterminado. Para obtener detalles
sobre cómo cambiar el modo predeterminado, consulte el consejo a continuación. Sin embargo, tenga en cuenta que la
declaración local de la anotación @Autowired
para un constructor tiene prioridad sobre la anotación
@TestConstructor
y el modo predeterminado.
Descubrimiento automático del constructor de pruebas y modo de enlace el valor predeterminado se
puede cambiar estableciendo la propiedad del sistema spring.test.constructor.autowire.mode
de la
JVM en
all
. Además, el modo predeterminado se puede configurar a través de SpringProperties
mecanismo.
A partir de Spring Framework 5.3, el modo predeterminado también se puede configurar como Parámetro de configuración de la plataforma JUnit.
Si la propiedad
spring.test.constructor.autowire.mode
es no se establece, las clases de prueba de los constructores
no
se descubrirán ni asociarán automáticamente.
@TestConstructor
la
anotación solo se admite en combinación con SpringExtension
para usar con JUnit Jupiter. Tenga
en cuenta que SpringExtension
a menudo se registra automáticamente, por ejemplo, cuando se utilizan las
anotaciones @SpringJUnitConfig
y @SpringJUnitWebConfig
o varias anotaciones relacionadas
con pruebas de Spring Boot Prueba.
@NestedTestConfiguration
@NestedTestConfiguration
es una anotación de nivel de tipo que se utiliza para configurar si cómo se
manejan las anotaciones de configuración de prueba en Spring dentro de la jerarquía de clases para las clases de
prueba internas.
Si la anotación @NestedTestConfiguration
no está presente o está presente a
través de una metaanotación en una prueba class, en sus supertipos de jerarquía o en la jerarquía de sus clases
envolventes, se utilizará el modo de herencia predeterminado de la configuración envolvente. Para obtener
detalles sobre cómo cambiar el modo predeterminado, consulte el consejo a continuación.
El modo de herencia de configuración envolvente predeterminado es INHERIT
, pero se puede
cambiar estableciendo la propiedad del sistema spring.test.enclosing.configuration
de JVM a
OVERRIDE
. Alternativamente, el modo predeterminado se puede configurar a través de SpringProperties
mecanismo.
Spring
TestContext Framework admite la semántica de la anotación @NestedTestConfiguration
para las
siguientes anotaciones.
@NestedTestConfiguration
la anotación normalmente sólo
tiene sentido en combinación con clases de prueba de JUnit Jupiter marcadas con la anotación @Nested
;
sin embargo, puede haber otros marcos de prueba que admitan Spring y clases de prueba anidadas que utilicen esta
anotación.
Consulte: sección "Configuración
de una clase de prueba con la anotación @Nested
" para ver el ejemplo y obtener información más
detallada.
@EnabledIf
Anotación @EnabledIf
se utiliza
para señalar que una clase de prueba o método de prueba JUnit Jupiter anotado está habilitado y debe ejecutarse si
la expression
especificada es true
. Específicamente, si la expresión es
Boolean.TRUE
o String
es true
(caso ignorado), se activa la prueba. Cuando se
aplica a nivel de clase, todos los métodos de prueba dentro de esa clase también se habilitan automáticamente de
forma predeterminada.
Las expresiones pueden tomar cualquiera de las siguientes formas:
Idioma expresión Lenguaje de expresión Spring (SpEL). Ejemplo:
@EnabledIf("#{systemProperties['os.name'].toLowerCase().contains('mac')}")
Marcador de posición para una propiedad disponible en
Environment
de la primavera estructura. Ejemplo:@EnabledIf("${smoke.tests.enabled}")
Texto literal. Ejemplo:
@EnabledIf("true")
Tenga en cuenta, sin embargo, que un literal de texto que no sea el resultado de un marcador de posición de
propiedad que se establezca dinámicamente resuelto tiene valor práctico cero, ya que la anotación @EnabledIf("false")
es equivalente a la anotación @Disabled
, y la @EnabledIf("true")
la anotación no tiene
sentido lógico.
Puede utilizar la anotación @EnabledIf
como una metaanotación para crear
anotaciones compuestas especiales. Por ejemplo, puede crear una anotación personalizada @EnabledOnMac
de la siguiente manera:
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@EnabledIf(
expression = "#{systemProperties['os.name'].toLowerCase().contains('mac')}",
reason = "Enabled on Mac OS"
)
public @interface EnabledOnMac {}
@Target(AnnotationTarget.TYPE, AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)
@EnabledIf(
expression = "#{systemProperties['os.name'].toLowerCase().contains('mac')}",
reason = "Enabled on Mac OS"
)
annotation class EnabledOnMac {}
La anotación @EnabledOnMac
sirve únicamente como ejemplo de
que Esto es posible. Si este es su caso, aproveche el soporte integrado para la anotación
@EnabledOnOs(MAC)
en JUnit Jupiter.
A partir de JUnit 5.7, JUnit Jupiter también tiene una anotación
condicional llamada @EnabledIf
. Por lo tanto, si necesita utilizar el soporte de anotación @EnabledIf
en Spring, asegúrese de importar el tipo de anotación del paquete correcto.
@DisabledIf
La anotación @DisabledIf
se utiliza para indicar que una clase de prueba
anotada de JUnit Jupiter o un método de prueba está deshabilitado y no debe ejecutarse a menos que la expresión
expression
resulta ser true
. En particular, si la expresión es
Boolean.TRUE
o String
es true
(caso ignorado), la prueba está deshabilitada.
Cuando se aplica a nivel de clase, todos los métodos de prueba en esa clase también se desactivan automáticamente.
Las expresiones pueden tomar cualquiera de las siguientes formas:
Expresión de lenguaje Lenguaje de expresión Spring (SpEL). Ejemplo:
@DisabledIf("#{systemProperties['os.name'].toLowerCase().contains('mac')}")
Marcador de posición para una propiedad disponible en el marco de Spring
Environment
. Ejemplo:@DisabledIf("${smoke.tests.disabled}")
Texto literal. Ejemplo:
@DisabledIf("true")
Tenga en cuenta, sin embargo, que un literal de texto que no sea el resultado de un marcador de posición de
propiedad que se establezca dinámicamente resuelto tiene valor práctico cero, ya que la anotación @DisabledIf("true")
es equivalente a la anotación @Disabled
, y la @DisabledIf("false")
la anotación no tiene
sentido lógico.
Puede utilizar la anotación @DisabledIf
como una metaanotación para crear
anotaciones compuestas especiales. Por ejemplo, puede crear una anotación personalizada @DisabledOnMac
de la siguiente manera:
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@DisabledIf(
expression = "#{systemProperties['os.name'].toLowerCase().contains('mac')}",
reason = "Disabled on Mac OS"
)
public @interface DisabledOnMac {}
@Target(AnnotationTarget.TYPE, AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)
@DisabledIf(
expression = "#{systemProperties['os.name'].toLowerCase().contains('mac')}",
reason = "Disabled on Mac OS"
)
annotation class DisabledOnMac {}
La anotación @DisabledOnMac
sirve únicamente como ejemplo de
que Esto es posible. Si este es su caso, aproveche el soporte integrado para la anotación @DisabledOnOs(MAC) en
JUnit Jupiter.
A partir de JUnit 5.7, JUnit Jupiter también tiene una anotación
condicional llamada @DisabledIf
. Por lo tanto, si necesita utilizar el soporte de anotación @DisabledIf
en Spring, asegúrese importa el tipo de anotación del paquete correcto.