Las siguientes anotaciones solo se admiten cuando se usan en combinación con SpringRunner, reglas para JUnit 4 en Spring o Clases auxiliares de JUnit 4 en Spring:

@IfProfileValue

La anotación @IfProfileValue indica que la prueba anotada está habilitada para un entorno de prueba específico. Si el ProfileValueSource configurado devuelve un value coincidente para el name especificado, entonces la prueba se activa. De lo contrario, la prueba se desactiva y se ignora de forma efectiva.

Puede aplicar la anotación @IfProfileValue a nivel de clase, a nivel de método o en ambos niveles. El uso de la anotación @IfProfileValue a nivel de clase tiene prioridad sobre el uso a nivel de método para cualquier método dentro de esa clase o sus subclases. Específicamente, una prueba se considera activada si está activada tanto en el nivel de clase como en el de método. La ausencia de la anotación @IfProfileValue significa que la prueba está activada implícitamente. Esto coincide con la semántica de la anotación @Ignore de JUnit 4, excepto que la presencia de la anotación @Ignore siempre deshabilita la prueba.

El siguiente ejemplo muestra una prueba con la anotación @IfProfileValue:

Java

@IfProfileValue(name="java.vendor", value="Oracle Corporation") 
@Test
public void testProcessWhichRunsOnlyOnOracleJvm() {
    // cierta lógica que sólo debería ejecutarse en la máquina virtual Java de Oracle Corporation
}
  1. Solo realizamos esta prueba si el proveedor de Java es Oracle Corporation.
Kotlin

@IfProfileValue(name="java.vendor", value="Oracle Corporation") 
@Test
fun testProcessWhichRunsOnlyOnOracleJvm() {
    // cierta lógica que sólo debería ejecutarse en la máquina virtual Java de Oracle Corporation
}
  1. Solo realizamos esta prueba si el proveedor de Java es Oracle Corporation.

Alternativamente, puede configurar la anotación @IfProfileValue usando una lista de values (con semántica OR) para obtener soporte similar a TestNG para grupos de pruebas en el entorno JUnit 4. Considere el siguiente ejemplo:

Java

IfProfileValue(name="test-groups", values={"unit-tests", "integration-tests"}) 
@Test
public void testProcessWhichRunsForUnitOrIntegrationTestGroups() {
    // cierta lógica que solo debe ejecutarse para grupos de pruebas unitarias y de integración
}
  1. Realizamos esta prueba para pruebas unitarias y de integración.
Kotlin

@IfProfileValue(name="test-groups", values=["unit-tests", "integration-tests"]) 
@Test
fun testProcessWhichRunsForUnitOrIntegrationTestGroups() {
    // cierta lógica que solo debe ejecutarse para grupos de pruebas unitarias y de integración
}
  1. Realizamos esta prueba para pruebas unitarias y de integración.

@ProfileValueSourceConfiguration

@ProfileValueSourceConfiguration es una anotación a nivel de clase que especifica qué tipo de ProfileValueSource usar al recuperar valores de perfil configurados con @IfProfileValue anotación. Si la anotación @ProfileValueSourceConfiguration no se declara para una prueba, entonces el valor predeterminado es SystemProfileValueSource. El siguiente ejemplo muestra cómo utilizar la anotación @ProfileValueSourceConfiguration:

Java

@ProfileValueSourceConfiguration(CustomProfileValueSource.class) 
public class CustomProfileValueSourceTests {
    // cuerpo de la clase...
}
  1. Utilice una fuente de valor de perfil especial.
Kotlin

@ProfileValueSourceConfiguration(CustomProfileValueSource::class) 
class CustomProfileValueSourceTests {
    // cuerpo de la clase...
}
  1. Utilice una fuente de valor de perfil especial.

@Timed

La anotación la @Timed especifica que el método de prueba anotado debe completar la ejecución dentro de un período de tiempo específico (en milisegundos). Si el tiempo de ejecución del texto excede el período de tiempo especificado, la prueba falla.

El período de tiempo incluye la ejecución del método de prueba en sí, cualquier repetición de la prueba (ver @Repeat) y la instalación y desmontaje del banco de pruebas. El siguiente ejemplo muestra cómo usarlo:

Java

@Timed(millis = 1000) 
public void testProcessWithOneSecondTimeout() {
    // alguna lógica que no debería tardar más de 1 segundo en completarse
}
  1. Establezca el período de tiempo para la prueba en un segundo.
Kotlin

@Timed(millis = 1000) 
fun testProcessWithOneSecondTimeout() {
    // alguna lógica que no debería tardar más de 1 segundo en completarse
}
  1. Establezca el período de tiempo para la prueba en un segundo.

La anotación @Timed de Spring tiene una semántica diferente a la proporcionada por las funciones de anotación @Test(timeout=…) de JUnit 4. En particular, desde -the forma en que JUnit 4 maneja los tiempos de espera de ejecución de las pruebas (es decir, ejecutando el método de prueba en un Thread separado), @Test(timeout=...) en modo proactivo, la prueba falla si la prueba dura demasiado. Por otro lado, la anotación @Timed en Spring no falla la prueba de manera proactiva, sino que espera a que se complete la prueba antes de fallar.

@Repeat

La anotación

La @Repeat especifica que el método de prueba anotado debe ejecutarse varias veces. El número de ejecuciones del método de prueba se indica en la anotación.

El alcance de la reejecución incluye la ejecución del método de prueba en sí, así como la instalación y desmontaje del banco de pruebas. Cuando se usa con SpringMethodRule el alcance incluye adicionalmente la preparación implementación de instancia de prueba TestExecutionListener. El siguiente ejemplo muestra cómo utilizar la anotación @Repeat:

Java
@Repeat(10) 
@Test
public void testProcessRepeatedly() {
    // ...
}
  1. Repita esta prueba diez veces.
Kotlin
@Repeat(10) 
@Test
fun testProcessRepeatedly() {
    // ...
}
  1. Repita esta prueba diez veces.