|
[B]asic module for [unit] program testing:
|
Ejemplo mínimo de uso de BUnit.
More...
Public Member Functions | |
| bool | run () |
[virtual] ==> Executes test and returns "false" if not successful. | |
| void | runBare () |
Excecutes the test run setUp(); run(); tearDown();. | |
| bool | Run () |
Synonym for run(). | |
| bool | runTest () |
Synonym for run(). | |
| virtual void | setUp () |
| Sets the environment for the test run. | |
| virtual void | tearDown () |
| Destroys the test environment. | |
| int | countTestCases () const |
| 1 == Number of test cases. | |
| int | runCount () const |
| Number of test runs. | |
| virtual int | failureCount () const |
| Number of test runs that failed. | |
| int | errorCount () const |
Always returns 0 (cero): "Number of errors". | |
| virtual int | successCount () const |
| Number of successful test runs. | |
| bool | wasSuccessful () const |
Returns "true" when all test runs where successful. | |
| virtual void | reset () |
| Discards all test runs. | |
| std::string | getName () const |
| Gets the test case name. | |
| void | setName (const char *name=0) |
Sets the test case name to "name". | |
| virtual const std::string | toString () const |
Huuuge string that holds a copy of non successfull test, separated by "\n". | |
| virtual const std::string | summary () const |
| Returns a string with the name, number of successes and failures. | |
| virtual const std::string | toXML () const |
| XML string that holds a copy of all unsuccessful tests. | |
| const std::string | report () const |
Returns string summary() followed by toString(). | |
| const std::string | failureString () const |
Synonym for toString(). | |
Static Public Member Functions | |
| template<class T > | |
| static std::string | toString (const T &val) |
Returns a std::string constructed form value val. | |
Protected Member Functions | |
| void | recordSuccess () |
| Records the test run as a success. | |
| void | recordFailure (const char *label, const char *fname, int lineno, bool must_copy=false) |
| Records that the test run did not succeed. | |
| void | recordFailure (const std::string &label, const char *fname, int lineno) |
| Records that the test did not succeed. | |
| void | testThis (bool cond, const char *label, const char *fname, long lineno, bool must_copy=false) |
| Executes the test and records its result. | |
| void | testThis (bool cond, const std::string &label, const char *fname, long lineno) |
Synonym for testThis(). | |
| int | nPass () const |
Synonym for successCount() [OBSOLETE]. | |
| int | nError () const |
Synonym for failureCount() [OBSOLETE]. | |
Protected Attributes | |
| int | m_pass |
| Number of successful tests. | |
| int | m_failure |
| Number of test that produced failed. | |
| const char * | m_name |
| Test case name. | |
| bool | m_test_suite_destroy |
Holds "true" if the test case is stored in dynamic memory. | |
| std::list< TestCaseFailure > | m_failureList |
| Container where test cases that produced failures are stored. | |
Friends | |
| class | TestSuite |
| Colección de pruebas. | |
| template<class TestCase > | |
| void | do_toXML (const TestCase *tc, std::basic_ostringstream< char > &ost) |
Adds to ost the string of al unsuccessful test from *tc in XML format. | |
| template<class TestCase > | |
| void | do_toString (const TestCase *tc, std::basic_ostringstream< char > &ost) |
Adds to ost the string of al unsuccessful test from *tc. | |
| bool test0::run | ( | ) | [inline, virtual] |
| void TestCase::runBare | ( | ) | [inline, inherited] |
Excecutes the test run setUp(); run(); tearDown();.
run(), this method will setup the environment for the test run invoking setUp() and tearDown() before and after the test. {{ // 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 );
}}
Reimplemented in TestSuite< TestCase >.
| bool TestCase::Run | ( | ) | [inline, inherited] |
| bool TestCase::runTest | ( | ) | [inline, inherited] |
| void TestCase::setUp | ( | ) | [inline, virtual, inherited] |
Sets the environment for the test run.
TestCase::run() is an abstract method, to facilitate programming it is usual for the programmer not to invoke TestCase::setUp() and TestCase::tearDown() because it is easier to have TestSuite<TestCase>::runBare() do it.TestCase::runBare(), method TestCase::run() will not establish the test environment because it does not invoke neither TestCase::setUp() before the test run nor TestCase::tearDown() after the test run.TestSuite<TestCase>::runBare() invokes methods TestCase::setUp() and TestCase::tearDown() when the test run is executed.TestSuite and execute all of them invoking TestSuite<TestCase>::runBare(). Reimplemented in test_rational< INT >, ADH::test_Graph, and test1.
| void TestCase::tearDown | ( | ) | [inline, virtual, inherited] |
| int TestCase::countTestCases | ( | ) | const [inline, inherited] |
1 == Number of test cases.
The value returned always is one 1 because class TestCase represents a single test case. For the container TestSuite<> the value returned can be bigger than 1.
TestCase."assert()" macro, as assertTrue(), fail_Msg(), assertEquals_Delta(), or others like BUnit_SUCCESS() or BUnit_TEST().TestSuite<>. Reimplemented in TestSuite< TestCase >.
| int TestCase::runCount | ( | ) | const [inline, inherited] |
Number of test runs.
successCount()+failureCount()+errorCount(). | int TestCase::failureCount | ( | ) | const [inline, virtual, inherited] |
| int TestCase::errorCount | ( | ) | const [inline, inherited] |
Always returns 0 (cero): "Number of errors".
| int TestCase::successCount | ( | ) | const [inline, virtual, inherited] |
| bool TestCase::wasSuccessful | ( | ) | const [inline, inherited] |
Returns "true" when all test runs where successful.
(successCount() == runCount()) | void TestCase::reset | ( | ) | [inline, virtual, inherited] |
Discards all test runs.
{{ // 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
}}
Reimplemented in TestSuite< TestCase >.
| std::string TestCase::getName | ( | ) | const [inline, inherited] |
| void TestCase::setName | ( | const char * | name = 0 | ) | [inline, inherited] |
Sets the test case name to "name".
"name" is a null string or pointer, later typeid(*this).name() will be invoked to get the test´s name. {{ // 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] |
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
Reimplemented in TestSuite< TestCase >.
| std::string TestCase::toString | ( | const T & | val | ) | [static, inherited] |
Returns a std::string constructed form value val.
toString() with standard C++ | const std::string TestCase::summary | ( | ) | const [inline, virtual, inherited] |
Returns a string with the name, number of successes and failures.
Reimplemented in TestSuite< TestCase >.
| const std::string TestCase::toXML | ( | ) | const [inline, virtual, inherited] |
XML string that holds a copy of all unsuccessful tests.
<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"/>
Reimplemented in TestSuite< TestCase >.
| const std::string TestCase::report | ( | ) | const [inline, inherited] |
Returns string summary() followed by toString().
| const std::string TestCase::failureString | ( | ) | const [inline, inherited] |
Synonym for 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] |
Records that the test run did not succeed.
"fname" and "lineno" indicate the file and line where the test run is executed."fname" and "lineno" are usuallly obtained invoking global macros "__FILE__" and "__LINE__"."must_copy" forces a copy of string label to be created in dynamic memory. This dynamic memory will be destroyed when the test case gets destroyed or when method TestCase::reset() gets invoked."label" is a constant string generated by the preprocessor macro using #cond; this string constant is not stored in dynamic memory and it must not be destroyed.This method is invoked using 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] |
Executes the test and records its result.
successCount().toString() this fact."cond"."fname" and "lineno" show the file and line of the executed test."fname" and "lineno" are values obtained with global macros "__FILE__" and "__LINE__"."must_copy" indicates whether it is necessary to make a copy of string "label"; this copy will be destroyed when the record of not successful test is deleted."label" is a constant genertated by the preprocessor when using macro #cond its memory must not be returned. This method is invoked using 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] |
Synonym for 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 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] |
1.8.0