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
:
@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
}
- Solo realizamos esta prueba si el proveedor de Java es Oracle Corporation.
@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
}
- 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:
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
}
- Realizamos esta prueba para pruebas unitarias y de integración.
@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
}
- 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
:
@ProfileValueSourceConfiguration(CustomProfileValueSource.class)
public class CustomProfileValueSourceTests {
// cuerpo de la clase...
}
- Utilice una fuente de valor de perfil especial.
@ProfileValueSourceConfiguration(CustomProfileValueSource::class)
class CustomProfileValueSourceTests {
// cuerpo de la clase...
}
- 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:
@Timed(millis = 1000)
public void testProcessWithOneSecondTimeout() {
// alguna lógica que no debería tardar más de 1 segundo en completarse
}
- Establezca el período de tiempo para la prueba en un segundo.
@Timed(millis = 1000)
fun testProcessWithOneSecondTimeout() {
// alguna lógica que no debería tardar más de 1 segundo en completarse
}
- 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
:
@Repeat(10)
@Test
public void testProcessRepeatedly() {
// ...
}
- Repita esta prueba diez veces.
@Repeat(10)
@Test
fun testProcessRepeatedly() {
// ...
}
- Repita esta prueba diez veces.