c++ - Usar ASSERT y EXPECT en GoogleTest
google test install (4)
Mientras que las macros ASSERT_ * causan la terminación del caso de prueba, las macros EXPECT_ * continúan su evaluación. Me gustaría saber cuál es el criterio para decidir si usar uno u otro.
Además de las respuestas anteriores ...
ASSERT_
no finaliza la ejecución del caso de prueba. Retorna de cualquier función en la que se haya utilizado. Además de fallar en el caso de prueba, evalúa el return;
, y esto significa que no se puede usar en una función que devuelve algo que no sea void
. A menos que esté bien con la advertencia del compilador, eso es.
EXPECT_
falla el caso de prueba pero no return;
, por lo que puede usarse dentro de funciones de cualquier tipo de devolución.
Consulte el siguiente enlace: Pruebas efectivas de C ++ con GoogleTest (diapositiva 23). Hay una buena pauta / consejo sobre el uso de EXPECT vs ASSERT.
Use EXPECT_
cuando
- desea informar más de un error en su prueba
Use ASSERT_
cuando
- no tiene sentido continuar cuando la afirmación falla
Como ASSERT_
cancela su función inmediatamente si falla, se salta el posible código de limpieza. Prefiero EXPECT_
como su predeterminado.
Use ASSERT
cuando sea crítico que pase la prueba. (Por ejemplo, si no se aprueba, el resto del programa no funcionará). Utilice EXPECT
cuando se trata de una prueba que puede fallar (y le permitirá ejecutar su programa).
La regla general es: use EXPECT
menos que necesite algo para trabajar para la totalidad de las pruebas, en cuyo caso debe usar ASSERT
ya que continuar no tiene sentido.
Esto se repite en la primer :
Normalmente se prefiere
EXPECT_*
, ya que permiten informar más de una falla en una prueba. Sin embargo, debe usarASSERT_*
si no tiene sentido continuar cuando falla la afirmación en cuestión.