Descripción
JUnit 4
JUnit 4 es el framework para el desarrollo de tests unitarios por excelencia en Java. Utiliza las siguientes anotaciones:
@Test
: identifica un método como método test. Admite los parámetros:expected =
devuelve resultado fallido en caso de que no se lance la excepción indicada<clase_excepcion.class> ón.class>- En JUnit 5 se sustituye por
Assertions.assertThrows(<clase_excepcion.class>)
.
- En JUnit 5 se sustituye por
timeout = <milisegundos>
devuelve resultado fallido en caso de que la ejecución dure más demilisegundos
.- En JUnit 5 se sustituye por
Assertions.assertTimeout(<milisegundos>)
.
- En JUnit 5 se sustituye por
@Before
: se ejecuta antes de cada test. Normalmente se utiliza para preparar el entorno de testing (por ejemplo: inicialización de clases, lectura de datos de entrada....).@After
: se ejecuta después de cada test. Normalmente se utiliza para limpiar el entorno de testing.@BeforeClass
: se ejecuta una vez, antes de comenzar todos los tests. Esto métodos deben definirse como static para trabajar con JUnit.@AfterClass
: se ejecuta una vez, cuando los tests han finalizado. Estos métodos deben definirse como static para trabajar con JUnit.@Ignore
: el método de test debe ser desactivado (no se ejecuta).
Spring Boot
Spring Boot dispone de sus propias anotaciones específicas
@RunWith(SpringRunner.class)
: ejecuta el test dentro de un Spring Context- Cuando se utiliza JUnit 5, se sustituye por
@ExtendWith(SpringExtension.class)
.
- Cuando se utiliza JUnit 5, se sustituye por
@SpringBootTest
: busca el Spring Boot Application para configurarse@TestConfiguration
: especifica una configuración de Spring para el test@MockBean
: inyecta un mock de Mockito@SpyBean
: inyecta un spy de Mockito@JsonTest
: crea un objeto mapper de Jackson o Gson vía Spring Boot@WebMvcTest
: se utiliza para testear un contexto web sin levantar un servidor Http completo@DataJpaTest
: sirve para probar la capa de datos con la base de datos embebida@JdbcTest
: es similar a@DataJpaTest
, pero no configura el entity manager@DataMongoTest
: configura una base de datos MongoDB embebida para los tests@RestClientTest
: crea un servidor mock para probar clientes rest@AutoConfigureRestDocs
: permite el uso de Spring Rest Docs en los tests, creando documentación del API@BootStrapWith
: configura la forma en que el contexto de pruebas se arranca@ContextConfiguration
: indica a Spring cómo configurar el contexto para el test@ContextHierarchy
: permite crear una jerarquía del contexto con@ContextConfiguration
@ActiveProfiles
: indica qué perfiles de Spring deberían estar activos para el test@TestPropertySource
: configura los orígenes para el test@DirtiesContext
: resetea el contexto de Spring después del test (es una operación costosa en tiempo)@WebAppConfiguration
: indica que Spring debería usar el contexto Web Application@TestExecutionListeners
: permite especificar los oyentes para los eventos del test@Transactional
: ejecuta el test en transacción, y hace un rollback cuando se completa por defecto@BeforeTransaction
: acción a ejecutar previa a iniciar la transacción@AfterTransaction
: acción a ejecutar tras la transacción@Commit
: especifica que se debe ejecutar commit sobre la transacción cuando el test ha finalizado.@Rollback
: especifica que se debe ejecutar un rollback sobre la transacción cuando el test ha finalizado. Esta es la acción por defecto@Sql
: especifica los scripts SQL a ejecutar antes de los tests@SqlConfig
: define los metadatos para los scripts Sql@SqlGroup
: grupo de anotaciones@Sql
@Repeat
: repite el test X veces@Timed
: es similar al timeout de JUnit, pero espera a que se complete el test@IfProfileValue
: indica que el test sólo se ejecuta para un entorno de test específico@ProfileValueSourceConfiguration
: especifica una fuente para el valor del perfil
JUnit 5
@BeforeEach
: se ejecuta antes de cada test. Normalmente se utiliza para preparar el entorno de testing (por ejemplo: inicialización de clases, lectura de datos de entrada....).@AfterEach
: se ejecuta después de cada test. Normalmente se utiliza para limpiar el entorno de testing.@BeforeAll
: se ejecuta una vez, antes de comenzar todos los tests. Esto métodos deben definirse como static para trabajar con JUnit.@AfterAll
: se ejecuta una vez, cuando los tests han finalizado. Estos métodos deben definirse como static para trabajar con JUnit.@Disabled
: el método de test debe ser desactivado (no se ejecuta).