the Compartmented Robust Posix C++ Unit Test system |
|
---|
Define a testsuite for grouping of tests.
Used in: Global or testsuite scope
A testsuite has a name and a scope. The scope of a testsuite is defined by the curly brace pair. Tests defined inside a testsuite gets a scoped name testsuitename::testname. Testsuites can be nested.
Example. The following test program:
#include <crpcut.hpp> TESTSUITE(outer) { TESTSUITE(inner) { TEST(fail) { FAIL << "just for show"; } } } int main(int argc, char *argv[]) { return crpcut::run(argc, argv); }
Shows the failure of a test in a testsuite.
FAILED!: outer::inner::fail phase="running" -------------------------------------------------------------- samples/simple_testsuite.cpp:36 just for show ------------------------------------------------------------------------------- =============================================================================== 1 test cases selected Sum Critical Non-critical FAILED : 1 1 0
A test can depend on a testsuite, and a testsuite can depend on both
tests and other testsuites. Dependency requirements for a testsuite
are expressed using the
DEPENDS_ON(...)
modifier as the
second argument to the TESTSUITE(name, ...)
macro.
A testsuite is a C++ namespace. It is possible to declare a dependency for a testsuite implemented in another source file.
Example: Cross-file testsuite dependency
#include <crpcut.hpp> TESTSUITE(external_pass) { TEST(passes) { } } TESTSUITE(external_fail) { TEST(fails) { FAIL << "Just for show"; } }
#include <crpcut.hpp> TESTSUITE(external_pass) // defined in other source file { } TESTSUITE(external_fail) // defined in other source file { } TESTSUITE(depend_pass, DEPENDS_ON(ALL_TESTS(external_pass))) { TEST(will_pass) { } } TESTSUITE(depend_fail, DEPENDS_ON(ALL_TESTS(external_fail))) { TEST(will_not_run) { } } int main(int argc, char *argv[]) { return crpcut::run(argc, argv); }
reports one failed test, and one that did not run:
FAILED!: external_fail::fails phase="running" -------------------------------------------------------------- /home/bjorn/devel/crpcut/doc-src/samples/suite_define.cpp:41 Just for show ------------------------------------------------------------------------------- =============================================================================== The following tests were blocked from running: !depend_fail::will_not_run 4 test cases selected Sum Critical Non-critical PASSED : 2 2 0 FAILED : 1 1 0 UNTESTED : 1
Defining tests in testsuites distributed over several files is ill advised.