51 lines
1.3 KiB
Plaintext
51 lines
1.3 KiB
Plaintext
|
Busybox unit test framework
|
||
|
===========================
|
||
|
|
||
|
This document describes what you need to do to write test cases using the
|
||
|
Busybox unit test framework.
|
||
|
|
||
|
|
||
|
Building unit tests
|
||
|
-------------------
|
||
|
|
||
|
The framework and all tests are built as a regular Busybox applet if option
|
||
|
CONFIG_UNIT_TEST (found in General Configuration -> Debugging Options) is set.
|
||
|
|
||
|
|
||
|
Writing test cases
|
||
|
------------------
|
||
|
|
||
|
Unit testing interface can be found in include/bbunit.h.
|
||
|
|
||
|
Tests can be placed in any .c file in Busybox tree - preferably right next to
|
||
|
the functions they test. Test cases should be enclosed within an #if, and
|
||
|
should start with BBUNIT_DEFINE_TEST macro and end with BBUNIT_ENDTEST within
|
||
|
the test curly brackets. If an assertion fails the test ends immediately, ie.
|
||
|
the following assertions will not be reached. Any code placed after
|
||
|
BBUNIT_ENDTEST is executed regardless of the test result. Here's an example:
|
||
|
|
||
|
#if ENABLE_UNIT_TEST
|
||
|
|
||
|
BBUNIT_DEFINE_TEST(test_name)
|
||
|
{
|
||
|
int *i;
|
||
|
|
||
|
i = malloc(sizeof(int));
|
||
|
BBUNIT_ASSERT_NOTNULL(i);
|
||
|
*i = 2;
|
||
|
BBUNIT_ASSERT_EQ((*i)*(*i), 4);
|
||
|
|
||
|
BBUNIT_ENDTEST;
|
||
|
|
||
|
free(i);
|
||
|
}
|
||
|
|
||
|
#endif /* ENABLE_UNIT_TEST */
|
||
|
|
||
|
|
||
|
Running the unit test suite
|
||
|
---------------------------
|
||
|
|
||
|
To run the tests you can either directly run 'busybox unit' or use 'make test'
|
||
|
to run both the unit tests (if compiled) and regular test suite.
|