documentation of my internal testcase runner
This commit is contained in:
parent
5575a7679d
commit
e3d1c35ca3
2 changed files with 85 additions and 9 deletions
|
|
@ -1,16 +1,15 @@
|
||||||
|
TESTING "Component Test Suite: ALL" ./test-components
|
||||||
|
|
||||||
|
|
||||||
TESTING "Component Test Suite" ./test-components
|
|
||||||
|
|
||||||
TEST "Fac test" Factory_test <<END
|
|
||||||
return: 0
|
|
||||||
END
|
|
||||||
|
|
||||||
TEST "Hello test" HelloWorld_test <<END
|
TEST "Hello test" HelloWorld_test <<END
|
||||||
out: This is how the world ends...
|
out: This is how the world ends...
|
||||||
return: 0
|
return: 0
|
||||||
END
|
END
|
||||||
|
|
||||||
TEST "Cmdline Wrapper" CmdlineWrapper_test <<END
|
|
||||||
|
TEST "CmdlineWrapper_test" CmdlineWrapper_test <<END
|
||||||
out: wrapping cmdline:...
|
out: wrapping cmdline:...
|
||||||
out: -->
|
out: -->
|
||||||
out: wrapping cmdline:
|
out: wrapping cmdline:
|
||||||
|
|
@ -37,11 +36,45 @@ out: 4|€|
|
||||||
out: -->oo _O()O_ ä + €
|
out: -->oo _O()O_ ä + €
|
||||||
out: wrapping cmdline:...
|
out: wrapping cmdline:...
|
||||||
out: -->
|
out: -->
|
||||||
out: Standard Cmdlineformat: one two
|
out: Standard Cmdlineformat:one two
|
||||||
END
|
END
|
||||||
|
|
||||||
TEST "Parseoption" TestOption_test <<END
|
|
||||||
|
TEST "TestOption_test" TestOption_test <<END
|
||||||
out: Testing invocation with cmdline: ...
|
out: Testing invocation with cmdline: ...
|
||||||
return: 0
|
out: --> Testgroup=ALL
|
||||||
|
out: --> Test-ID =--missing--
|
||||||
|
out: --> remaining=
|
||||||
|
out: Testing invocation with cmdline: --help...
|
||||||
|
out: --> Testgroup=ALL
|
||||||
|
out: --> Test-ID =--missing--
|
||||||
|
out: --> remaining=
|
||||||
|
out: Testing invocation with cmdline: --group TestGroupID...
|
||||||
|
out: --> Testgroup=TestGroupID
|
||||||
|
out: --> Test-ID =--missing--
|
||||||
|
out: --> remaining=
|
||||||
|
out: Testing invocation with cmdline: SingleTestID...
|
||||||
|
out: --> Testgroup=ALL
|
||||||
|
out: --> Test-ID =SingleTestID
|
||||||
|
out: --> remaining=SingleTestID
|
||||||
|
out: Testing invocation with cmdline: SingleTestID --group TestGroupID...
|
||||||
|
out: --> Testgroup=TestGroupID
|
||||||
|
out: --> Test-ID =SingleTestID
|
||||||
|
out: --> remaining=SingleTestID
|
||||||
|
out: Testing invocation with cmdline: --group TestGroupID SingleTestID ...
|
||||||
|
out: --> Testgroup=TestGroupID
|
||||||
|
out: --> Test-ID =SingleTestID
|
||||||
|
out: --> remaining=SingleTestID
|
||||||
|
out: Testing invocation with cmdline: --group TestGroupID SingleTestID spam eggs...
|
||||||
|
out: --> Testgroup=TestGroupID
|
||||||
|
out: --> Test-ID =SingleTestID
|
||||||
|
out: --> remaining=SingleTestID spam eggs
|
||||||
|
out: Testing invocation with cmdline: SingleTestID spam --group TestGroupID --eggs...
|
||||||
|
out: --> Testgroup=TestGroupID
|
||||||
|
out: --> Test-ID =SingleTestID
|
||||||
|
out: --> remaining=SingleTestID spam --eggs
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
TEST "Factory_test" Factory_test <<END
|
||||||
|
END
|
||||||
|
|
|
||||||
|
|
@ -3552,7 +3552,7 @@ Here is the order suggested:
|
||||||
|
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div title="TestSuite" modifier="Ichthyostega" modified="200708180218" created="200708120254" tags="buildsys organization testsuite" changecount="11">
|
<div title="TestSuite" modifier="Ichthyostega" modified="200708231706" created="200708120254" tags="buildsys organization testsuite" changecount="16">
|
||||||
<pre>For running the automatic Tests, we use Cehteh's simple [[test.sh|TestSh]].
|
<pre>For running the automatic Tests, we use Cehteh's simple [[test.sh|TestSh]].
|
||||||
|
|
||||||
This page is a proposal (by Ichthyo) how the various tests could be organized.
|
This page is a proposal (by Ichthyo) how the various tests could be organized.
|
||||||
|
|
@ -3564,6 +3564,49 @@ This page is a proposal (by Ichthyo) how the various tests could be organized.
|
||||||
* the Testsuite executable provides some command line magic to select individual tests.
|
* the Testsuite executable provides some command line magic to select individual tests.
|
||||||
* Top-level Testsuites or ''~Test-Collections'' for [[test.sh|TestSh]] contain calls to the different (sub)-Suites, together with the expected results/output
|
* Top-level Testsuites or ''~Test-Collections'' for [[test.sh|TestSh]] contain calls to the different (sub)-Suites, together with the expected results/output
|
||||||
|
|
||||||
|
!internal Testsuite runner
|
||||||
|
The class {{{test::Suite}}} (common/test/suite.hpp) helps building an executable which will run all //registered// test case objects, or some group of such testcases. Each test case implements a simple interface and thus provides a {{{run (args)}}} function, moreover, it registers itself immediately alongside with his definition; this works by the usual trick of defining a static class object and calling some registration function from the constructor of this static var. See the following __hello-world-Example__:
|
||||||
|
{{{
|
||||||
|
#include <iostream>
|
||||||
|
#include "common/test/run.hpp"
|
||||||
|
|
||||||
|
class HelloWorld_test : public Test
|
||||||
|
{
|
||||||
|
virtual void run(Arg arg)
|
||||||
|
{
|
||||||
|
greeting();
|
||||||
|
}
|
||||||
|
|
||||||
|
void greeting()
|
||||||
|
{
|
||||||
|
std::cout << "This is how the world ends...\n";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Register this test class to be invoked in some test groups (suites) */
|
||||||
|
LAUNCHER (HelloWorld_test, "unit function common");
|
||||||
|
}}}
|
||||||
|
Notes:
|
||||||
|
* type Arg is {{{typedef std::vector<string> & Arg;}}}
|
||||||
|
* this vector may be {{{size()==0}}}, which means no comandline args available.
|
||||||
|
* otherwise arg[0] is always the ID (normally the classname) of the test
|
||||||
|
* the following args may contain further arguments passed from system commandline.
|
||||||
|
* the test can/should produce output that can be checked with Cehteh's [[./test.sh|TestSh]].
|
||||||
|
* the macro "LAUNCHER" expands to {{{Launch<HelloWorld_test> run_HelloWorld_test("HelloWorld_test","unit function common");}}}
|
||||||
|
* note the second parameter to the macro (or the Laucher-ctor) is a space-delimited list of group names
|
||||||
|
* thus any test can declare itself as belonging to some groups, and we can create a {{{test::Suite}}} for each group if we want.
|
||||||
|
|
||||||
|
!!!invoking the testrunner
|
||||||
|
The class {{{test::TestOption}}} predefines a boost-commandlineparser to support the following optons:
|
||||||
|
|
||||||
|
|>|!{{{./test-components --group <groupID> [testID [arguments...]]}}}|
|
||||||
|
|{{{--help}}}| options summary|
|
||||||
|
|{{{--group|-g <groupID>}}}| build a Testsuite out of all tests from this group. If missing, ALL tests will be included |
|
||||||
|
|{{{[testID]}}}| (optional) one single testcase. If missing, all testcases of the group will be invoked |
|
||||||
|
|{{{--describe}}}| print all registered tests to stdout in a format suited for use with test.sh |
|
||||||
|
Further commandline arguments are deliverd to a single testcase only if you specify a {{{testID}}}. Otherwise, all commandline arguments remaining after options parsing will be discarded and all tests of the suite will be run with an commandline vector of size()==0
|
||||||
|
|
||||||
|
|
||||||
!conventions for the Buildsystem
|
!conventions for the Buildsystem
|
||||||
to help with automating the build, ichthyo would appreciate to have the following conventions.
|
to help with automating the build, ichthyo would appreciate to have the following conventions.
|
||||||
* in the {{{tests}}} directory are
|
* in the {{{tests}}} directory are
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue