| the Compartmented Robust Posix C++ Unit Test system | hosted by |
|---|
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" --------------------------------------------------------------
/home/bjorn/devel/crpcut/doc-src/samples/simple_testsuite.cpp:36
just for show
-------------------------------------------------------------------------------
===============================================================================
Total 1 test cases selected
UNTESTED : 0
PASSED : 0
FAILED : 1
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
Total 4 test cases selected
UNTESTED : 1
PASSED : 2
FAILED : 1
Defining tests in testsuites distributed over several files is ill advised.