|
Modulo [B]asico para prueba [unit]aria de programas:
|
Cada caso de prueba es una instancia derivada de esta clase abstracta. Más...
#include <BUnit.h>
Métodos públicos | |
| TestCase (const char *name=0) | |
| Constructor. | |
| virtual | ~TestCase () |
| Destructor. | |
| virtual bool | run ()=0 |
[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 | setUp () |
| Establece el ambiente en que se realizará la prueba. | |
| 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. | |
Métodos privados | |
| virtual bool | iAmTestSuite () const |
Retorna false para TestCase. | |
| TestCase (const TestCase &) | |
Esta declaración "private" prohibe la copia de casos de prueba. | |
| TestCase & | operator= (const TestCase &) |
Esta declaración "private" prohibe la copia de casos de prueba. | |
Amigas | |
| class | TestSuite |
| Colección de pruebas. | |
| class | test_BUnit |
Clase de prueba para BUnit.h. | |
| 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. | |
Cada caso de prueba es una instancia derivada de esta clase abstracta.
TestCase::run(). | TestCase::TestCase | ( | const char * | name = 0 | ) | [inline] |
Constructor.
Si no se indica el nombre en "name", después el nombre se obtiene invocando typeid(*this).name().
{{ // test::constructor()
test_BUnit thisTest;
assertTrue( string::npos != thisTest.getName().find( "test_BUnit" ) );
assertTrue( thisTest.failureCount() == 0 );
assertTrue( thisTest.countTestCases() == 1 );
assertTrue( thisTest.successCount() == 0 );
assertTrue( thisTest.runCount() == 0 );
assertTrue( thisTest.failureString() == "" );
}}
| TestCase::~TestCase | ( | ) | [inline, virtual] |
| TestCase::TestCase | ( | const TestCase & | ) | [private] |
Esta declaración "private" prohibe la copia de casos de prueba.
| bool TestCase::run | ( | ) | [pure virtual] |
[virtual] ==> Ejecuta la prueba y retorna "false" si produce error.
[***] Siempre es necesario redefinir el método run().
Implementado en TestSuite< TestCase >, test_rational< INT >, ADH::test_Graph, test1, test_BUnit y test0.
| void TestCase::runBare | ( | ) | [inline] |
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] |
| bool TestCase::runTest | ( | ) | [inline] |
| void TestCase::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 en test_rational< INT >, ADH::test_Graph y test1.
| void TestCase::tearDown | ( | ) | [inline, virtual] |
| int TestCase::countTestCases | ( | ) | const [inline] |
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] |
Cantidad total de pruebas realizadas.
successCount()+failureCount()+errorCount(). | int TestCase::failureCount | ( | ) | const [inline, virtual] |
| int TestCase::errorCount | ( | ) | const [inline] |
Siempre retorna 0 (cero): "Cantidad de errores".
| int TestCase::successCount | ( | ) | const [inline, virtual] |
| bool TestCase::wasSuccessful | ( | ) | const [inline] |
Retorna "true" si todas las pruebas han sido exitosas.
(successCount() == runCount()) | void TestCase::reset | ( | ) | [inline, virtual] |
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] |
| void TestCase::setName | ( | const char * | name = 0 | ) | [inline] |
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] |
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 >.
| const std::string TestCase::summary | ( | ) | const [inline, virtual] |
Retorna un hilera que contiene el nombre, cantidad de éxitos y fallas.
Reimplementado en TestSuite< TestCase >.
| const std::string TestCase::toXML | ( | ) | const [inline, virtual] |
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] |
Retorna la hilera encabezado summary() seguido toString().
| const std::string TestCase::failureString | ( | ) | const [inline] |
Sinónimo de toString().
| std::string TestCase::toString | ( | const T & | val | ) | [static] |
Retorna una hilera std::string contruida desde el valor de val.
toString() with standard C++ | void TestCase::recordSuccess | ( | ) | [inline, protected] |
| void TestCase::recordFailure | ( | const char * | label, |
| const char * | fname, | ||
| int | lineno, | ||
| bool | must_copy = false |
||
| ) | [inline, protected] |
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] |
| void TestCase::testThis | ( | bool | cond, |
| const char * | label, | ||
| const char * | fname, | ||
| long | lineno, | ||
| bool | must_copy = false |
||
| ) | [inline, protected] |
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] |
Sinónimo de testThis().
| int TestCase::nPass | ( | ) | const [inline, protected] |
| int TestCase::nError | ( | ) | const [inline, protected] |
| bool TestCase::iAmTestSuite | ( | ) | const [inline, private, virtual] |
Retorna false para TestCase.
Reimplementado en TestSuite< TestCase >.
Esta declaración "private" prohibe la copia de casos de prueba.
friend class TestSuite [friend] |
friend class test_BUnit [friend] |
| void do_toString | ( | const TestCase * | tc, |
| std::basic_ostringstream< char > & | ost | ||
| ) | [friend] |
int TestCase::m_pass [protected] |
int TestCase::m_failure [protected] |
const char * TestCase::m_name [protected] |
bool TestCase::m_test_suite_destroy [protected] |
std::list< TestCaseFailure > TestCase::m_failureList [protected] |
1.8.0