Bartosz Golaszewski | 3ed81cf | 2014-06-22 16:30:41 +0200 | [diff] [blame] | 1 | Busybox unit test framework |
| 2 | =========================== |
| 3 | |
| 4 | This document describes what you need to do to write test cases using the |
| 5 | Busybox unit test framework. |
| 6 | |
| 7 | |
| 8 | Building unit tests |
| 9 | ------------------- |
| 10 | |
| 11 | The framework and all tests are built as a regular Busybox applet if option |
| 12 | CONFIG_UNIT_TEST (found in General Configuration -> Debugging Options) is set. |
| 13 | |
| 14 | |
| 15 | Writing test cases |
| 16 | ------------------ |
| 17 | |
| 18 | Unit testing interface can be found in include/bbunit.h. |
| 19 | |
| 20 | Tests can be placed in any .c file in Busybox tree - preferably right next to |
| 21 | the functions they test. Test cases should be enclosed within an #if, and |
| 22 | should start with BBUNIT_DEFINE_TEST macro and end with BBUNIT_ENDTEST within |
| 23 | the test curly brackets. If an assertion fails the test ends immediately, ie. |
| 24 | the following assertions will not be reached. Any code placed after |
| 25 | BBUNIT_ENDTEST is executed regardless of the test result. Here's an example: |
| 26 | |
| 27 | #if ENABLE_UNIT_TEST |
| 28 | |
| 29 | BBUNIT_DEFINE_TEST(test_name) |
| 30 | { |
| 31 | int *i; |
| 32 | |
| 33 | i = malloc(sizeof(int)); |
| 34 | BBUNIT_ASSERT_NOTNULL(i); |
| 35 | *i = 2; |
| 36 | BBUNIT_ASSERT_EQ((*i)*(*i), 4); |
| 37 | |
| 38 | BBUNIT_ENDTEST; |
| 39 | |
| 40 | free(i); |
| 41 | } |
| 42 | |
| 43 | #endif /* ENABLE_UNIT_TEST */ |
| 44 | |
| 45 | |
| 46 | Running the unit test suite |
| 47 | --------------------------- |
| 48 | |
| 49 | To run the tests you can either directly run 'busybox unit' or use 'make test' |
| 50 | to run both the unit tests (if compiled) and regular test suite. |