2011-07-20 13 views

Respuesta

7

Hace poco hice una búsqueda de pruebas unitarias y marcos de burlas para mi último proyecto y fui con Google Mock. Tenía la mejor documentación y parece bastante bien presentada (aunque todavía no he creado objetos simulados muy complejos). Inicialmente estaba pensando en usar boost::test pero terminé usando Google Test en su lugar (creo que es un requisito previo para Google Mock, incluso si usa otro marco de prueba). También tiene una buena documentación y ha tenido la mayoría de las características que esperaba.

2

GoogleMock tiene una sección sobre el uso con another framework.

+0

De hecho, pero todavía es propenso a fugas de memoria y requiere soluciones: http://stackoverflow.com/questions/38890959/initgooglemock-causes-memory-leak-with-boosttest?noredirect=1#comment65142935_38890959 – Ioanna

6

¡Puedes probar Turtle!

+0

¿Cuáles son? las ventajas de Turtle? –

+0

Bueno, se integra fácilmente con boost :: test: no necesitará todas las soluciones alternativas que se requieren para hacer un impulso :: el proyecto de prueba usa gmock, por ejemplo (vea también http://stackoverflow.com/questions/38890959/initgooglemock-causes-memory-leak-with-boosttest? noredirect = 1 # comment65142935_38890959). – Ioanna

6

Here tiene un ejemplo del uso de Google Mock con Boost Test. Prefiero Boost Test porque uso otros Boost libraries a menudo.

7

Fake-It es un marco de simulación simple para C++ que utiliza las últimas características de C++ 11 para crear una API expresiva (aunque muy simple). Con FakeIt no hay necesidad de volver a declarar métodos ni crear una clase derivada para cada simulacro y tiene una integración boost :: test incorporada. Aquí es cómo falso-It:

struct SomeInterface { 
    virtual int foo(int) = 0; 
}; 

// That's all you have to do to create a mock. 
Mock<SomeInterface> mock; 

// Stub method mock.foo(any argument) to return 1. 
When(Method(mock,foo)).Return(1); 

// Fetch the SomeInterface instance from the mock. 
SomeInterface &i = mock.get(); 

// Will print "1" 
cout << i.foo(10); 

Hay muchas más características para explorar. Adelante y give it a try.

Cuestiones relacionadas