FindCxxTest¶
Find CxxTest unit testing framework.
Find the CxxTest suite and declare a helper macro for creating unit tests and integrating them with CTest.
Input Variables¶
CXXTEST_USE_PYTHONDeprecated since version 1.3.
Only used in the case both Python & Perl are detected on the system to control which CxxTest code generator is used. Valid only for CxxTest version 3.
In older versions of this Find Module, this variable controlled if the Python test generator was used instead of the Perl one, regardless of which scripting language the user had installed.
CXXTEST_TESTGEN_ARGSAdded in version 2.8.3.
Specify a list of options to pass to the CxxTest code generator. If not defined,
--error-printeris passed.
Result Variables¶
CXXTEST_FOUNDTrue if the CxxTest framework was found
CXXTEST_INCLUDE_DIRSWhere to find the CxxTest include directory
CXXTEST_PERL_TESTGEN_EXECUTABLEThe perl-based test generator
CXXTEST_PYTHON_TESTGEN_EXECUTABLEThe python-based test generator
CXXTEST_TESTGEN_EXECUTABLEAdded in version 2.8.3.
The test generator that is actually used (chosen using user preferences and interpreters found in the system)
CXXTEST_TESTGEN_INTERPRETERAdded in version 2.8.3.
The full path to the Perl or Python executable on the system, on platforms where the script cannot be executed using its shebang line.
Module Commands¶
- cxxtest_add_test¶
Create a CxxTest runner and adds it to the CTest testing suite:
CXXTEST_ADD_TEST(<test_name> <gen_source_file> <input_files_to_testgen>...)Parameters:
test_nameThe name of the test
gen_source_fileThe generated source filename to be generated by CxxTest
input_files_to_testgenThe list of header files containing the CxxTest::TestSuite's to be included in this runner
Example Usage¶
The following example, if CxxTest is found, will:
Invoke the testgen executable to autogenerate foo_test.cc in the binary tree from "foo_test.h" in the current source directory.
Create an executable and test called unittest_foo.
find_package(CxxTest)
if(CXXTEST_FOUND)
include_directories(${CXXTEST_INCLUDE_DIR})
enable_testing()
CXXTEST_ADD_TEST(unittest_foo foo_test.cc
${CMAKE_CURRENT_SOURCE_DIR}/foo_test.h)
target_link_libraries(unittest_foo foo) # as needed
endif()
foo_test.h contains:
#include <cxxtest/TestSuite.h>
class MyTestSuite : public CxxTest::TestSuite
{
public:
void testAddition( void )
{
TS_ASSERT( 1 + 1 > 1 );
TS_ASSERT_EQUALS( 1 + 1, 2 );
}
};