| the Compartmented Robust Posix C++ Unit Test system |
|
|---|
A test and testsuite modifier to state dependencies. The test(s) will not run until all dependencies are resolved, i.e. the referred tests have succeeded.
Used in: The modifier list of a test definition or testsuite definition.
See TEST(name, ...) and
TESTSUITE(name, ...)
The parameter to DEPENDS_ON(...) is a comma
separated list of dependencies. Each dependency can be either a
the name of a test, or
ALL_TESTS(testsuitename)
When DEPENDS_ON(...) is used for a testsuite,
the dependencies applies for all tests in the testsuite. It is possible
to constrain a single test further than the testsuite it resides in,
by adding a DEPENDS_ON(...) modifier to the
test.
![]() | Tip |
|---|---|
| It is often a good idea to let testsuites depend on testsuites, and tests to depend on other tests inside the same testsuite. |
![]() | Note |
|---|---|
A dependency on a
DISABLED_TEST(name, ...) is handled
as if the disabled test has succeeded.
|
![]() | Note |
|---|---|
DEPENDS_ON(...) can only be included once in
the modifier list for each
TEST(name, ...) or
TESTSUITE(name, ...).
|
![]() | Note |
|---|---|
| If you use GCC version 4.3 or higher, and compile your test sources with -std=c++0x, there is no limit to the number of parameters, otherwise you can list maximum 17 names in the parameter list. |
Example: The test program
#include <crpcut.hpp>
struct A
{
A() {}
~A() { exit(0); }
void do_something() const {}
};
TESTSUITE(basics)
{
TEST(construct)
{
(void)new A(); // intentionally leak
}
TEST(destroy, DEPENDS_ON(construct))
{
A *p = new A();
delete p;
}
}
TESTSUITE(toy, DEPENDS_ON(ALL_TESTS(basics)))
{
TEST(work)
{
A obj;
obj.do_something();
}
}
int main(int argc, char *argv[])
{
return crpcut::run(argc, argv);
}
reports one failed test, and one that did not run:
FAILED!: basics::destroy
phase="running" --------------------------------------------------------------
samples/depends_on.cpp:44
Exited with code 0
Expected normal exit
-------------------------------------------------------------------------------
===============================================================================
The following tests were blocked from running:
!toy::work
3 test cases selected
Sum Critical Non-critical
PASSED : 1 1 0
FAILED : 1 1 0
UNTESTED : 1
See also the -n / --nodeps
command line flag.