#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á cada prueba. | |
| virtual void | tearDown () |
| Destruye el ambiente de prueba. | |
| int | countTestCases () const |
| Cantidad de casos de prueba que serán ejecutados. | |
| int | runCount () const |
| Cantidad total de pruebas realizadas. | |
| virtual int | errorCount () const |
| Cantidad de pruebas que han producido error. | |
| int | failureCount () const |
Siempre retorna 0 (cero): "Cantidad de fallas". | |
| 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. | |
| 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 cantidad de errores de la prueba. | |
| 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 de errores toString(). | |
| const std::string | errorString () const |
Sinónimo de toString(). | |
Métodos públicos estáticos | |
| template<class T> | |
| static std::string | toString (const T &val) |
Retorna una hilera que contiene el valor de val. | |
Métodos protegidos | |
| void | recordSuccess () |
| Registra como exitoso el resultado de una prueba. | |
| void | recordError (const char *label, const char *fname, int lineno, bool must_copy=false) |
| Registra que la prueba no tuvo éxito. | |
| void | recordError (const std::string &label, const char *fname, int lineno) |
| Registra que la prueba no tuvo éxito. | |
| void | testThis (bool cond, const std::string &label, const char *fname, long lineno) |
Sinónimo de testThis();. | |
| void | testThis (bool cond, const char *label, const char *fname, long lineno, bool must_copy=false) |
| Efectúa la prueba y registra el resultado. | |
| int | nPass () const |
Sinónimo de successCount() [OBSOLETO]. | |
| int | nError () const |
Sinónimo de errorCount() [OBSOLETO]. | |
Atributos protegidos | |
| int | m_pass |
| Cantidad de pruebas exitosas. | |
| int | m_error |
| Cantidad de pruebas que han producido error. | |
| const char * | m_name |
| Nombre del caso de prueba. | |
| bool | m_test_suite_destroy |
| Indica si la prueba está en memoria dinámica. | |
| std::list< TestCaseError > | m_errorList |
| Contenedor para registrar las pruebas que han producido error. | |
Métodos privados | |
| virtual bool | iAmTestSuite () const |
Retorna false para TestCase. | |
| TestCase (const TestCase &) | |
"private" evita la copia de casos de prueba | |
| TestCase & | operator= (const TestCase &) |
"private" evita 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. | |
TestCase::run(). Definición en la línea 135 del archivo BUnit.h.
| TestCase::TestCase | ( | const char * | name = 0 |
) | [inline] |
Constructor.
"name", el nombre se obtiene con typeid(*this).name().
{{ // test::constructor()
test_BUnit thisTest;
assertTrue( string::npos != thisTest.getName().find( "test_BUnit" ) );
assertTrue( thisTest.errorCount() == 0 );
assertTrue( thisTest.countTestCases() == 1 );
assertTrue( thisTest.successCount() == 0 );
assertTrue( thisTest.runCount() == 0 );
assertTrue( thisTest.errorString() == "" );
}}
| virtual TestCase::~TestCase | ( | ) | [inline, virtual] |
| TestCase::TestCase | ( | const TestCase & | ) | [private] |
"private" evita la copia de casos de prueba
| virtual 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_BUnit, test0, ADH::test_Graph, y test_rational< INT >.
| void TestCase::runBare | ( | ) | [inline] |
Ejecuta la prueba setUp(); run(); tearDown();.
run(), este método si 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; // comienza en 0
public:
MyTest() : 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.errorString() );
SSS.runBare(); // Correcto porque setUp() pone [m_val == 1]
assertTrue( "" == SSS.toXML() );
SSS.run(); // Error: [m_val == 2] pues así lo dejó tearDown()
std::string sssXML = SSS.toXML();
assertTrue( "" != sssXML ); // pues hay errores en SSS
assertTrue( sssXML.find("m_val") != string::npos );
assertTrue( SSS.runCount() == 2+2 );
}}
Reimplementado en TestSuite< TestCase >.
| bool TestCase::runTest | ( | ) | [inline] |
| void TestCase::setUp | ( | ) | [inline, virtual] |
Establece el ambiente en que se realizará cada 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 simple 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 .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 ADH::test_Graph, y test_rational< INT >.
| void TestCase::tearDown | ( | ) | [inline, virtual] |
| int TestCase::countTestCases | ( | ) | const [inline] |
| int TestCase::runCount | ( | ) | const [inline] |
Cantidad total de pruebas realizadas.
successCount()+errorCount()+failureCount(). | virtual int TestCase::errorCount | ( | ) | const [inline, virtual] |
Cantidad de pruebas que han producido error.
Reimplementado en TestSuite< TestCase >.
| int TestCase::failureCount | ( | ) | const [inline] |
Siempre retorna 0 (cero): "Cantidad de fallas".
| virtual int TestCase::successCount | ( | ) | const [inline, virtual] |
| bool TestCase::wasSuccessful | ( | ) | const [inline] |
| void TestCase::reset | ( | ) | [inline, virtual] |
Elimina todas las pruebas realizadas.
{{ // test::reset()
class MyTest : public TestCase {
public:
bool run() {
assertTrue( 1 == 2 ); // Error !!!
assertTrue( 1 == 1 ); // Ok
assertTrue( 2 == 2 ); // Ok
return wasSuccessful();
}
}; // MyTest
MyTest thisTest;
for ( int i=0; i<11; ++i ) {
thisTest.run(); // corre 11 veces la misma prueba
}
assertTrue( 11 == thisTest.errorCount() ); // ( 1 == 2 ) x 11
assertTrue( 22 == thisTest.successCount() ); // ( 1 == 1 ) && ( 2 == 2 )
assertTrue( 33 == thisTest.runCount() ); // 33 == 11+22
assertTrue( "" != thisTest.errorString() ); // 11 errores registrados
std::string remember = thisTest.getName();
thisTest.reset(); // Anula los contadores
assertTrue( 0 == thisTest.errorCount() );
assertTrue( 0 == thisTest.successCount() );
assertTrue( 0 == thisTest.runCount() );
assertTrue( "" == thisTest.errorString() );
assertTrue( remember == thisTest.getName() ); // reset() no borra el nombre
}}
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.
{{ // 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() );
}}
| const std::string TestCase::toString | ( | ) | const [inline, virtual] |
Hilera "enooorme" que contiene copia del registro de pruebas no exitosas, separados por "\n".
=\_error: 1 == 0
=/ (125) X:\DIR\SubDir\test_BUnit.cpp
=\_error: 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 cantidad de errores de la prueba.
Reimplementado en TestSuite< TestCase >.
| const std::string TestCase::toXML | ( | ) | const [inline, virtual] |
Hilera XML que contiene una copia de las pruebas no exitosas.
<error file="X:\DIR\SubDir\test_BUnit.cpp" line="125" message="1 == 0"/> <error 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 de errores toString().
| const std::string TestCase::errorString | ( | ) | const [inline] |
| std::string TestCase::toString | ( | const T & | val | ) | [inline, static] |
| void TestCase::recordSuccess | ( | ) | [inline, protected] |
| void TestCase::recordError | ( | 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 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_ERROR().
| void TestCase::recordError | ( | const std::string & | label, | |
| const char * | fname, | |||
| int | lineno | |||
| ) | [inline, protected] |
| void TestCase::testThis | ( | bool | cond, | |
| const std::string & | label, | |||
| const char * | fname, | |||
| long | 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 el resultado.
successCount().toString() el 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 es 2", __FILE__, __LINE__, dont_copy ); // Ok
testThis( 1 == 2, "1 es 2", __FILE__, __LINE__, dont_copy ); // Error(#1)
testThis( 2 == 1, "2 es 1", __FILE__, __LINE__, dont_copy ); // Error(#2)
return wasSuccessful();
}
}; // MyTest
MyTest thisTest;
assertTrue( thisTest.wasSuccessful() ); // no se ha ejecutador run()
thisTest.run(); // produce 2 errores
assertTrue( thisTest.errorCount() == 2 );
assertTrue( ! thisTest.wasSuccessful() );
}}
| int TestCase::nPass | ( | ) | const [inline, protected] |
| int TestCase::nError | ( | ) | const [inline, protected] |
| virtual bool TestCase::iAmTestSuite | ( | ) | const [inline, private, virtual] |
"private" evita la copia de casos de prueba
friend class TestSuite [friend] |
friend class test_BUnit [friend] |
| void do_toXML | ( | const TestCase * | tc, | |
| std::basic_ostringstream< char > & | ost | |||
| ) | [friend] |
| void do_toString | ( | const TestCase * | tc, | |
| std::basic_ostringstream< char > & | ost | |||
| ) | [friend] |
int TestCase::m_pass [protected] |
int TestCase::m_error [protected] |
const char* TestCase::m_name [protected] |
bool TestCase::m_test_suite_destroy [protected] |
std::list<TestCaseError> TestCase::m_errorList [protected] |
1.5.4