BUnit.h.
Más...

Métodos públicos | |
| bool | run () |
| Método principal de la prueba. | |
| void | test_constructor () |
Datos de prueba para los constructores de la clase TestCase. | |
| void | test_reset () |
Datos de prueba para los métodos TestCase::reset() y TestCase::resetTests(). | |
| void | test_addTest () |
Datos de prueba para los métodos TestSuite<TestCase>::addTest(). | |
| void | test_run () |
Datos de prueba para los métodos run() y runBare(). | |
| void | test_setName () |
Datos de prueba para los métodos getName() y setName(). | |
| void | test_testThis () |
Datos de prueba para el método testThis(). | |
| void | test_BUnit_macro () |
Datos de prueba para las macros de BUnit.h. | |
| void | test_assertTrue_Msg () |
Datos de prueba para las macros de assertTrue_Msg(). | |
| void | test_Allison () |
| Datos de prueba similares a los de Allison. | |
| 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. | |
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. | |
BUnit.h.
Definición en la línea 15 del archivo test_BUnit.cpp.
| bool test_BUnit::run | ( | ) | [virtual] |
Método principal de la prueba.
setUp(). Implementa TestCase.
Definición en la línea 31 del archivo test_BUnit.cpp.
| void test_BUnit::test_constructor | ( | ) |
Datos de prueba para los constructores de la clase TestCase.
Definición en la línea 46 del archivo test_BUnit.cpp.
| void test_BUnit::test_reset | ( | ) |
Datos de prueba para los métodos TestCase::reset() y TestCase::resetTests().
Definición en la línea 66 del archivo test_BUnit.cpp.
| void test_BUnit::test_addTest | ( | ) |
Datos de prueba para los métodos TestSuite<TestCase>::addTest().
SSS se queda vacío
Definición en la línea 98 del archivo test_BUnit.cpp.
| void test_BUnit::test_run | ( | ) |
Datos de prueba para los métodos run() y runBare().
Definición en la línea 171 del archivo test_BUnit.cpp.
| void test_BUnit::test_setName | ( | ) |
Datos de prueba para los métodos getName() y setName().
Definición en la línea 201 del archivo test_BUnit.cpp.
| void test_BUnit::test_testThis | ( | ) |
| void test_BUnit::test_BUnit_macro | ( | ) |
| void test_BUnit::test_assertTrue_Msg | ( | ) |
Datos de prueba para las macros de assertTrue_Msg().
Definición en la línea 284 del archivo test_BUnit.cpp.
| void test_BUnit::test_Allison | ( | ) |
Datos de prueba similares a los de Allison.
{{ // test::Allison()
// Pila LIFO de letras -- muy simple (<em>Last In First Out</em>).
// - Tira la excepción \c std::logic_error en operaciones inválidas.
// - Ejemplo inspirado en el trabajo de Chuck Allison
// - http://search.yahoo.com/search?n=100&p=Simplest+Unit+Test+Allison
class Stack {
public:
enum { N = 5 /* Capacidad máxima de la pila.*/ };
// Constructor de una pila con capacidad para \c "Stack::N" valores.
Stack() : m_top(0) { m_vec[m_top] = 0; }
// Agrega una copia de \c "v" al tope de la pila.
void push(const char& v) {
if ( m_top != N ) { m_vec[m_top] = v; m_top++; }
else { throw std::out_of_range("Stack::push()"); }
}
// Elimina el valor del tope de la pila.
void pop() {
if ( m_top>0 ) { m_top--; }
else { throw std::out_of_range("Stack::pop()"); }
}
// Referencia al valor almacenado en el tope de la pila.
char& top() {
if ( m_top>0 ) { return m_vec[m_top-1]; }
else { throw std::out_of_range("Stack::top()"); }
}
// Cantidad de valores almacenados.
unsigned size() const { return m_top; }
private:
char m_vec[N+1] ; // Vector de valores almacenados.
int m_top; // Siguiente campo disponible.
}; // Stack
class MyTest : public TestCase {
public:
bool run() {
Stack S; // la gran pila
try { // Pila vacía
S.pop();
fail_Msg("! S.pop()");
}
catch ( std::out_of_range & ex ) {
assertTrue( 0 == strcmp( ex.what() , "Stack::pop()" ) ); // Ok: pila vacía
}
catch (...) {
fail_Msg("! ( std::out_of_range & )");
}
try { // Pila llena
for (int i=0; true; ++i) {
S.push('0'+i);
assertTrue( S.top() == '0'+i );
}
fail_Msg("! S.push()");
}
catch ( std::out_of_range & ex ) {
assertTrue( 0 == strcmp( ex.what() , "Stack::push()" ) ); // Ok: pila llena
}
catch (...) {
fail_Msg("! ( std::out_of_range & )");
}
try { // Vacea la pila
for (int i=Stack::N-1; true; --i) {
assertTrue( S.top() == '0'+i );
S.pop();
}
fail_Msg("! S.pop()");
}
catch ( std::out_of_range & ex ) {
assertTrue( 0 == strcmp( ex.what() , "Stack::top()" ) ); // Ok: pila vacía
}
catch (...) {
fail_Msg("! ( std::out_of_range & )");
}
return wasSuccessful();
}
}; // MyTest
MyTest thisTest;
thisTest.run(); // produce 0 errores
assertTrue( thisTest.wasSuccessful() );
}}
Definición en la línea 323 del archivo test_BUnit.cpp.
| void TestCase::runBare | ( | ) | [inline, inherited] |
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::Run | ( | ) | [inline, inherited] |
| bool TestCase::runTest | ( | ) | [inline, inherited] |
| void TestCase::setUp | ( | ) | [inline, virtual, inherited] |
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, inherited] |
| int TestCase::countTestCases | ( | ) | const [inline, inherited] |
| int TestCase::runCount | ( | ) | const [inline, inherited] |
Cantidad total de pruebas realizadas.
successCount()+errorCount()+failureCount(). | virtual int TestCase::errorCount | ( | ) | const [inline, virtual, inherited] |
Cantidad de pruebas que han producido error.
Reimplementado en TestSuite< TestCase >.
| int TestCase::failureCount | ( | ) | const [inline, inherited] |
Siempre retorna 0 (cero): "Cantidad de fallas".
| virtual int TestCase::successCount | ( | ) | const [inline, virtual, inherited] |
| bool TestCase::wasSuccessful | ( | ) | const [inline, inherited] |
| void TestCase::reset | ( | ) | [inline, virtual, inherited] |
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, inherited] |
| void TestCase::setName | ( | const char * | name = 0 |
) | [inline, inherited] |
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, inherited] |
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 >.
| std::string TestCase::toString | ( | const T & | val | ) | [inline, static, inherited] |
| const std::string TestCase::summary | ( | ) | const [inline, virtual, inherited] |
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, inherited] |
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, inherited] |
Retorna la hilera encabezado summary() seguido de errores toString().
| const std::string TestCase::errorString | ( | ) | const [inline, inherited] |
| void TestCase::recordSuccess | ( | ) | [inline, protected, inherited] |
| void TestCase::recordError | ( | 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 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, inherited] |
| void TestCase::testThis | ( | bool | cond, | |
| const std::string & | label, | |||
| const char * | fname, | |||
| long | 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 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, inherited] |
| int TestCase::nError | ( | ) | const [inline, protected, inherited] |
friend class TestSuite [friend, inherited] |
| void do_toXML | ( | const TestCase * | tc, | |
| std::basic_ostringstream< char > & | ost | |||
| ) | [friend, inherited] |
| void do_toString | ( | const TestCase * | tc, | |
| std::basic_ostringstream< char > & | ost | |||
| ) | [friend, inherited] |
int TestCase::m_pass [protected, inherited] |
int TestCase::m_error [protected, inherited] |
const char* TestCase::m_name [protected, inherited] |
bool TestCase::m_test_suite_destroy [protected, inherited] |
std::list<TestCaseError> TestCase::m_errorList [protected, inherited] |
1.5.4