Modulo [B]asico para prueba [unit]aria de programas:
|
Muestra de uso de assertTrue_Msg()
.
Más...
Métodos públicos | |
void | setUp () |
Establece el ambiente en que se realizará la prueba. | |
bool | run () |
[virtual] ==> Ejecuta la prueba y retorna "false" si produce error. | |
void | runBare () |
Ejecuta la prueba setUp(); run(); tearDown(); . | |
bool | Run () |
Sinónimo de run() . | |
bool | runTest () |
Sinónimo de run() . | |
virtual void | tearDown () |
Destruye el ambiente de prueba. | |
int | countTestCases () const |
1 == Cantidad de casos de prueba. | |
int | runCount () const |
Cantidad total de pruebas realizadas. | |
virtual int | failureCount () const |
Cantidad de pruebas que fallaron. | |
int | errorCount () const |
Siempre retorna 0 (cero): "Cantidad de errores". | |
virtual int | successCount () const |
Cantidad de pruebas exitosas. | |
bool | wasSuccessful () const |
Retorna "true" si todas las pruebas han sido exitosas. | |
virtual void | reset () |
Elimina todas las pruebas realizadas. | |
std::string | getName () const |
Obtiene el nombre de la prueba. | |
void | setName (const char *name=0) |
Le cambia el nombre a la prueba por "name" . | |
virtual const std::string | toString () const |
Hilera "enooorme" que contiene copia del registro de pruebas no exitosas, separados por "\n" . | |
virtual const std::string | summary () const |
Retorna un hilera que contiene el nombre, cantidad de éxitos y fallas. | |
virtual const std::string | toXML () const |
Hilera XML que contiene una copia de las pruebas no exitosas. | |
const std::string | report () const |
Retorna la hilera encabezado summary() seguido toString() . | |
const std::string | failureString () const |
Sinónimo de toString() . | |
Métodos públicos estáticos | |
template<class T > | |
static std::string | toString (const T &val) |
Retorna una hilera std::string contruida desde el valor de val . | |
Métodos protegidos | |
void | recordSuccess () |
Registra como exitoso el resultado de una prueba. | |
void | recordFailure (const char *label, const char *fname, int lineno, bool must_copy=false) |
Registra que la prueba no tuvo éxito. | |
void | recordFailure (const std::string &label, const char *fname, int lineno) |
Registra que la prueba no tuvo éxito. | |
void | testThis (bool cond, const char *label, const char *fname, long lineno, bool must_copy=false) |
Efectúa la prueba y registra su resultado. | |
void | testThis (bool cond, const std::string &label, const char *fname, long lineno) |
Sinónimo de testThis() . | |
int | nPass () const |
Sinónimo de successCount() [OBSOLETO]. | |
int | nError () const |
Sinónimo de failureCount() [OBSOLETO]. | |
Atributos protegidos | |
int | m_pass |
Cantidad de pruebas exitosas. | |
int | m_failure |
Cantidad de pruebas que han fallado. | |
const char * | m_name |
Nombre del caso de prueba. | |
bool | m_test_suite_destroy |
Contiene "true" si la prueba está almacenada en memoria dinámica. | |
std::list< TestCaseFailure > | m_failureList |
Contenedor para almacenar las pruebas que han producido fallas. | |
Tipos privados | |
enum | { N = 2 } |
Atributos privados | |
int | m_Matrix [N][N] |
Amigas | |
class | TestSuite |
Colección de pruebas. | |
template<class TestCase > | |
void | do_toXML (const TestCase *tc, std::basic_ostringstream< char > &ost) |
Le agrega a ost la hilera de todas las pruebas no exitosas de *tc en formato XML. | |
template<class TestCase > | |
void | do_toString (const TestCase *tc, std::basic_ostringstream< char > &ost) |
Le agrega a ost la hilera de todas las pruebas no exitosas de *tc . |
Muestra de uso de assertTrue_Msg()
.
anonymous enum [private] |
void test1::setUp | ( | ) | [inline, virtual] |
Establece el ambiente en que se realizará la prueba.
TestCase::run()
es un método abstracto, para facilitar la programación lo usual es que el programador no incluya invocaciones a TestCase::setUp()
y TestCase::tearDown()
pues es más fácil dejar que lo haga TestSuite<TestCase>::runBare()
.TestCase::runBare()
, el método TestCase::run()
no establece el ambiente de prueba porque no invoca ni a TestCase::setUp()
antes de la prueba ni a TestCase::tearDown()
después de la prueba.TestSuite<TestCase>::runBare()
invoca los métodos TestCase::setUp()
y TestCase::tearDown()
cuando ejecuta cada prueba.TestSuite
para ejecutarlas con TestSuite<TestCase>::runBare()
. Reimplementado de TestCase.
bool test1::run | ( | ) | [inline, virtual] |
void TestCase::runBare | ( | ) | [inline, inherited] |
Ejecuta la prueba setUp(); run(); tearDown();
.
run()
, este método sí establece el ambiente de prueba invocando setUp()
y tearDown()
antes y después de hacer la prueba. {{ // test::run() class MyTest : public TestCase { int m_val; public: MyTest() : m_val(0) {} // init: m_val == 0; void setUp() { m_val = 1; } void tearDown() { m_val = 2; } bool run() { assertTrue( m_val == 1 ); return wasSuccessful(); } }; // MyTest TestSuite<TestCase> SSS; SSS.addTest( new MyTest ); SSS.addTest( new MyTest ); assertTrue( 2 == SSS.countTestCases() ); assertTrue( "" == SSS.failureString() ); SSS.runBare(); // Ok ==> setUp() sets [m_val == 1] assertTrue( "" == SSS.toXML() ); SSS.run(); // Failure: [m_val == 2] ==> value set by tearDown() std::string sssXML = SSS.toXML(); assertTrue( "" != sssXML ); // SSS contains failures. assertTrue( sssXML.find("m_val") != string::npos ); assertTrue( SSS.runCount() == 2+2 ); }}
Reimplementado en TestSuite< TestCase >.
bool TestCase::Run | ( | ) | [inline, inherited] |
bool TestCase::runTest | ( | ) | [inline, inherited] |
void TestCase::tearDown | ( | ) | [inline, virtual, inherited] |
int TestCase::countTestCases | ( | ) | const [inline, inherited] |
1 == Cantidad de casos de prueba.
El valor retornado siempre es uno 1
porque la clase TestCase
representa un único caso de pruebas. Para el contenedor TestSuite<>
el valor retornado puede ser mayor a 1
.
TestCase
."assert()"
de BUnit, como lo son assertTrue()
, fail_Msg()
, assertEquals_Delta()
, u otros como BUnit_SUCCESS()
or BUnit_TEST()
.TestSuite<>
. Reimplementado en TestSuite< TestCase >.
int TestCase::runCount | ( | ) | const [inline, inherited] |
Cantidad total de pruebas realizadas.
successCount()+failureCount()+errorCount()
. int TestCase::failureCount | ( | ) | const [inline, virtual, inherited] |
int TestCase::errorCount | ( | ) | const [inline, inherited] |
Siempre retorna 0
(cero): "Cantidad de errores".
int TestCase::successCount | ( | ) | const [inline, virtual, inherited] |
bool TestCase::wasSuccessful | ( | ) | const [inline, inherited] |
Retorna "true"
si todas las pruebas han sido exitosas.
(successCount() == runCount())
void TestCase::reset | ( | ) | [inline, virtual, inherited] |
Elimina todas las pruebas realizadas.
{{ // test::reset() class MyTest : public TestCase { public: bool run() { assertTrue( 1 == 2 ); // Failure !!! assertTrue( 1 == 1 ); // Ok assertTrue( 2 == 2 ); // Ok return wasSuccessful(); } }; // MyTest MyTest thisTest; for ( int i=0; i<11; ++i ) { thisTest.run(); // runs the same test 11 times } assertTrue( 11 == thisTest.failureCount() ); // ( 1 == 2 ) x 11 assertTrue( 22 == thisTest.successCount() ); // ( 1 == 1 ) && ( 2 == 2 ) assertTrue( 33 == thisTest.runCount() ); // 33 == 11+22 assertTrue( "" != thisTest.failureString() ); // 11 recorded failures std::string remember = thisTest.getName(); thisTest.reset(); // Anula los contadores assertTrue( 0 == thisTest.failureCount() ); assertTrue( 0 == thisTest.successCount() ); assertTrue( 0 == thisTest.runCount() ); assertTrue( "" == thisTest.failureString() ); assertTrue( remember == thisTest.getName() ); // reset() won´t change the name }}
Reimplementado en TestSuite< TestCase >.
std::string TestCase::getName | ( | ) | const [inline, inherited] |
void TestCase::setName | ( | const char * | name = 0 | ) | [inline, inherited] |
Le cambia el nombre a la prueba por "name"
.
"name"
es una hilera o puntero nulo, después usa typeid(*this).name()
para obtener el nombre de la prueba. {{ // test::setName() class MyTest : public TestCase { public: bool run() { assertTrue( 2 == 2 ); return wasSuccessful(); } }; // MyTest MyTest thisTest; assertTrue( "chorlito" != thisTest.getName() ); thisTest.setName( "chorlito" ); assertTrue( "chorlito" == thisTest.getName() ); { // thisTest.setName( std::string("chorlito") ); // won´t compile thisTest.setName( std::string("chorlito").c_str() ); // bad practice std::string V("boom!"); assertTrue( 0==strcmp( V.c_str() , "boom!") ); assertTrue( "chorlito" != thisTest.getName() ); // c_str() uses assertTrue( "boom!" == thisTest.getName() ); // static data } }}
const std::string TestCase::toString | ( | ) | const [inline, virtual, inherited] |
Hilera "enooorme" que contiene copia del registro de pruebas no exitosas, separados por "\n"
.
Huuuge string that holds a copy of non successfull test, separated by "\n"
.
=_fail: 1 == 0 =/ (125) X:/DIR/SubDir/test_BUnit.cpp =_fail: 4 == 0 =/ (128) X:/DIR/SubDir/test_BUnit.cpp
Reimplementado en TestSuite< TestCase >.
std::string TestCase::toString | ( | const T & | val | ) | [static, inherited] |
Retorna una hilera std::string
contruida desde el valor de val
.
toString()
with standard C++ const std::string TestCase::summary | ( | ) | const [inline, virtual, inherited] |
Retorna un hilera que contiene el nombre, cantidad de éxitos y fallas.
Reimplementado en TestSuite< TestCase >.
const std::string TestCase::toXML | ( | ) | const [inline, virtual, inherited] |
Hilera XML que contiene una copia de las pruebas no exitosas.
<fail file="X:/DIR/SubDir/test_BUnit.cpp" line="125" message="1 == 0"/> <fail file="X:/DIR/SubDir/test_BUnit.cpp" line="128" message="4 == 0"/>
Reimplementado en TestSuite< TestCase >.
const std::string TestCase::report | ( | ) | const [inline, inherited] |
Retorna la hilera encabezado summary()
seguido toString()
.
const std::string TestCase::failureString | ( | ) | const [inline, inherited] |
Sinónimo de toString()
.
void TestCase::recordSuccess | ( | ) | [inline, protected, inherited] |
void TestCase::recordFailure | ( | const char * | label, |
const char * | fname, | ||
int | lineno, | ||
bool | must_copy = false |
||
) | [inline, protected, inherited] |
Registra que la prueba no tuvo éxito.
"fname"
y "lineno"
indican el archivo y el renglón en donde se ejecuta la prueba."fname"
y "lineno"
se obtienen invocando las macros globales "__FILE__"
y "__LINE__"
."must_copy"
indica que es necesario hacer una copia de la hilera "label"
en memoria dinámica. Este memoria dinámica será destruida cuando el caso de prueba sea destruido o cuando el método TestCase::reset()
sea invocado."label"
es una constante generada por el preprocesador al usar la macro #cond
; como esta hilera constante no está almacenada en la memoria dinámica no debe ser destruida.Este método es invocado usando la macro BUnit_FAILURE()
.
void TestCase::recordFailure | ( | const std::string & | label, |
const char * | fname, | ||
int | lineno | ||
) | [inline, protected, inherited] |
void TestCase::testThis | ( | bool | cond, |
const char * | label, | ||
const char * | fname, | ||
long | lineno, | ||
bool | must_copy = false |
||
) | [inline, protected, inherited] |
Efectúa la prueba y registra su resultado.
successCount()
.toString()
ese hecho."cond"
."fname"
y "lineno"
indican el archivo y el renglón en donde se ejecuta la prueba."fname"
y "lineno"
se obtienen con las macros globales "__FILE__"
y "__LINE__"
."must_copy"
indica que es necesario hacer una copia de la hilera "label"
, copia que será destruida cuando el registro de pruebas no exitosas sea borrado."label"
es una constante generada por el preprocesador al usar la macro #cond
y por eso su memoria no debe ser retornada. Este método es invocado usando la macro BUnit_TEST()
. {{ // test::testThis() class MyTest : public TestCase { public: bool run() { bool dont_copy = false; testThis( 2 == 2, "2 is 2", __FILE__, __LINE__, dont_copy ); // Ok testThis( 1 == 2, "1 is 2", __FILE__, __LINE__, dont_copy ); // failure #1 testThis( 2 == 1, "2 is 1", __FILE__, __LINE__, dont_copy ); // failure #2 return wasSuccessful(); } }; // MyTest MyTest thisTest; assertTrue( thisTest.wasSuccessful() ); // run() has not been executed thisTest.run(); // 2 failures assertTrue( thisTest.failureCount() == 2 ); assertTrue( ! thisTest.wasSuccessful() ); }}
void TestCase::testThis | ( | bool | cond, |
const std::string & | label, | ||
const char * | fname, | ||
long | lineno | ||
) | [inline, protected, inherited] |
Sinónimo de testThis()
.
int TestCase::nPass | ( | ) | const [inline, protected, inherited] |
int TestCase::nError | ( | ) | const [inline, protected, inherited] |
friend class TestSuite [friend, inherited] |
void do_toString | ( | const TestCase * | tc, |
std::basic_ostringstream< char > & | ost | ||
) | [friend, inherited] |
int test1::m_Matrix[N][N] [private] |
int TestCase::m_pass [protected, inherited] |
int TestCase::m_failure [protected, inherited] |
const char * TestCase::m_name [protected, inherited] |
bool TestCase::m_test_suite_destroy [protected, inherited] |
std::list< TestCaseFailure > TestCase::m_failureList [protected, inherited] |