Unit Test
From AbiWiki
(converted) |
|||
Line 1: | Line 1: | ||
- | + | Unit Test is a part of the [[Testing Framework]]. It performs basic testing of individual code units. | |
- | = | + | = Usage = |
On Unix, simply run | On Unix, simply run | ||
Line 33: | Line 33: | ||
= Directory structure = | = Directory structure = | ||
- | Every directory that contains code has a | + | Every directory that contains code has a t directory the contains its test. |
- | The support code for the UnitTest is in | + | The support code for the UnitTest is in abi/src/af/tf/xp/. |
- | The files are organized to match the source code files. They have the same name but with the | + | The files are organized to match the source code files. They have the same name but with the .t.cpp suffix. (.t.mm for Objective-C++ file where applicable). |
- | = | + | = Example = |
Here is a sample test for =UT_Vector=: | Here is a sample test for =UT_Vector=: | ||
Line 53: | Line 53: | ||
- | + | TFTEST_MAIN is a macro to declare the test function. | |
- | + | TFPASS() is a macro to check some condition that should be true | |
- | + | TFFAIL() is a macro to check a condition that should be false | |
= Makefile = | = Makefile = | ||
Line 63: | Line 63: | ||
TBD | TBD | ||
+ | --[[User:Hub|Hub]] 01:27, 13 October 2007 (CEST) | ||
[[Category:Developer]] | [[Category:Developer]] | ||
[[Category:Test]] | [[Category:Test]] |
Revision as of 23:27, 12 October 2007
Unit Test is a part of the Testing Framework. It performs basic testing of individual code units.
Contents |
Usage
On Unix, simply run
make test
It will run under Valgrind if configure did detect it.
Here is the sample output of a test from a real bug:
Testing "UT_LocaleTransactor" in ut_locale.t.cpp: ! ut_locale.t.cpp:35 strstr(msg, "1,0") == msg ok ! ut_locale.t.cpp:37 strcmp(setlocale(LC_NUMERIC, NULL), "fr_FR") == 0 ok ! ut_locale.t.cpp:41 NOT(strcmp(setlocale(LC_NUMERIC, NULL), "fr_FR") == 0) ok ! ut_locale.t.cpp:43 strstr(msg, "1.0") == msg ok ! ut_locale.t.cpp:44 strcmp(setlocale(LC_NUMERIC, NULL), "C") == 0 ok ! ut_locale.t.cpp:46 strcmp(setlocale(LC_NUMERIC, NULL), "fr_FR") == 0 FAILED ! ut_locale.t.cpp:48 strstr(msg, "1,0") == msg FAILED ! tf_test.cpp:119 new_valgrind_errs == old_valgrind_errs ok memleaks: sure:112 dubious:800 reachable:451080 suppress:0 ! tf_test.cpp:123 new_valgrind_leaks == old_valgrind_leaks ok
As you can see, some test pass, some fails.
The last 3 lines are for Valgrind. If they fail, then there is a Valgrind error in the code: a memory leak.
How to write test
Writing UnitTest is not really hard, if you understand the code. Sometime it is tricky because some classes are not meant to be used alone.
Directory structure
Every directory that contains code has a t directory the contains its test.
The support code for the UnitTest is in abi/src/af/tf/xp/.
The files are organized to match the source code files. They have the same name but with the .t.cpp suffix. (.t.mm for Objective-C++ file where applicable).
Example
Here is a sample test for =UT_Vector=:
TFTEST_MAIN("UT_GenericVector basics") { UT_GenericVector<char *> v; TFPASS(v.getItemCount() == 0); v.addItem("foo"); TFFAIL(v.getItemCount() == 0); }
TFTEST_MAIN is a macro to declare the test function.
TFPASS() is a macro to check some condition that should be true
TFFAIL() is a macro to check a condition that should be false
Makefile
TBD
--Hub 01:27, 13 October 2007 (CEST)