[CMake] CMake and Ctest and CppUnit

BigWave at web.de BigWave at web.de
Sun Mar 25 19:20:23 EST 2007


Hi Pascal, 

  wow, thank you for your response - that helped a lot!
After some struggles, I got it to register one test, and to execute it. Great.
But, if I add two tests, both get registered, but only one gets executed ... therefore twice though.

I hope someone can tell me what I am doing wrong here:

I added this to CMakeLists.txt
-------8<------------------8<------------
FILE(GLOB UnitTests_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "cppunit/*CUtest.cpp" )
ADD_EXECUTABLE(UnitTester cppunit/test_runner.cpp ${UnitTests_SRCS})
TARGET_LINK_LIBRARIES(UnitTester cppunit)
FOREACH(test ${UnitTests_SRCS})
        MESSAGE("  ######  adding test ${test}")
        GET_FILENAME_COMPONENT(TestName ${test} NAME_WE)
        ADD_TEST(${TestName} UnitTester ${TestName})
ENDFOREACH(test)
-------8>------------------8>------------

cppunit/testrunner.cpp looks like this
-------8<------------------8<------------
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/ui/text/TestRunner.h>

int main (int argc, char* argv[]) {
  CppUnit::TextUi::TestRunner runner;
  CppUnit::TestFactoryRegistry& registry = CppUnit::TestFactoryRegistry::getRegistry();
  runner.addTest( registry.makeTest() );
  bool failed = runner.run("", false);
  return !failed;
}
-------8>------------------8>------------

And the two test suites I have look like this:
-------8<--------cppunit/s1_CUtest.cpp----------8<------------
#include <cppunit/extensions/HelperMacros.h>

class S1CUTest : public CppUnit::TestFixture {
  CPPUNIT_TEST_SUITE( S1CUTest );
  CPPUNIT_TEST( test1 );
  CPPUNIT_TEST_SUITE_END();

private:

public:

  void setUp()
  {
  }

  void tearDown()
  {
  }

  void test1() {
    CPPUNIT_ASSERT ( 3 == 5 );
  }

};

CPPUNIT_TEST_SUITE_REGISTRATION( S1CUTest );
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( S1CUTest, "S1CUTest"  );

-------8>------------------8>------------

-------8<--------cppunit/s2_CUtest.cpp----------8<------------
#include <cppunit/extensions/HelperMacros.h>

class S2CUTest : public CppUnit::TestFixture {
  CPPUNIT_TEST_SUITE( S2CUTest );
  CPPUNIT_TEST( test2 );
  CPPUNIT_TEST_SUITE_END();

private:

public:

  void setUp()
  {
  }

  void tearDown()
  {
  }

  void test2() {
    CPPUNIT_ASSERT ( 3 == 3 );
  }

};

CPPUNIT_TEST_SUITE_REGISTRATION( S2CUTest );
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( S2CUTest, "S2CUTest"  );
-------8>------------------8>------------

after some struggles, cmake now returns
-------8<------------------8<------------   
######  adding test cppunit/s2_CUtest.cpp
######  adding test cppunit/s1_CUtest.cpp
-------8>------------------8>------------

but, then, when I run the tests, I get this (ctest -VV)
-------8<------------------8<------------   
  1/  2 Testing s2_CUtest
Test command: /[..]/test/UnitTester s2_CUtest

!!!FAILURES!!!
Test Results:
Run:  2   Failures: 1   Errors: 0

1) test: S1CUTest::test1 (F) line: 21 /[..]/cppunit/s1_CUtest.cpp
assertion failed
- Expression: 3 == 5

..F
-- Process completed
***Failed
  2/  2 Testing s1_CUtest
Test command: /[..]/test/UnitTester s1_CUtest

!!!FAILURES!!!
Test Results:
Run:  2   Failures: 1   Errors: 0

1) test: S1CUTest::test1 (F) line: 21 /[..]/cppunit/s1_CUtest.cpp
assertion failed
- Expression: 3 == 5

..F
-- Process completed
***Failed
[..]
-------8>------------------8>------------

I bet I am doing something stupid here ... but why does it execute one test twice, instead of two once ...

Any input very welcome, thanks, 

   JAN
_______________________________________________________________
SMS schreiben mit WEB.DE FreeMail - einfach, schnell und
kostenguenstig. Jetzt gleich testen! http://f.web.de/?mc=021192



More information about the CMake mailing list