test google c++ unit-testing googletest

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.



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 usar ASSERT_* si no tiene sentido continuar cuando falla la afirmación en cuestión.