This is the way tests are executed with CMocka. More...
Defines | |
#define | cmocka_unit_test(f) { #f, f, NULL, NULL } |
Initializes a CMUnitTest structure. | |
#define | cmocka_unit_test_setup(f, setup) { #f, f, setup, NULL } |
Initializes a CMUnitTest structure with a setup function. | |
#define | cmocka_unit_test_setup_teardown(f, setup, teardown) { #f, f, setup, teardown } |
Initialize an array of CMUnitTest structures with a setup function for a test and a teardown function. | |
#define | cmocka_unit_test_teardown(f, teardown) { #f, f, NULL, teardown } |
Initializes a CMUnitTest structure with a teardown function. | |
#define | group_test_setup(setup) { "group_" #setup, setup, UNIT_TEST_FUNCTION_TYPE_GROUP_SETUP } |
Initializes a UnitTest structure for a group setup function. | |
#define | group_test_teardown(teardown) { "group_" #teardown, teardown, UNIT_TEST_FUNCTION_TYPE_GROUP_TEARDOWN } |
Initializes a UnitTest structure for a group teardown function. | |
#define | unit_test(f) { #f, f, UNIT_TEST_FUNCTION_TYPE_TEST } |
Initializes a UnitTest structure. | |
#define | unit_test_setup(test, setup) |
Initializes a UnitTest structure with a setup function. | |
#define | unit_test_setup_teardown(test, setup, teardown) |
Initialize an array of UnitTest structures with a setup function for a test and a teardown function. | |
#define | unit_test_teardown(test, teardown) |
Initializes a UnitTest structure with a teardown function. | |
Functions | |
int | cmocka_run_group_tests (const struct CMUnitTest group_tests[], CMFixtureFunction group_setup, CMFixtureFunction group_teardown) |
Run tests specified by an array of CMUnitTest structures. | |
int | cmocka_run_group_tests_name (const char *group_name, const struct CMUnitTest group_tests[], CMFixtureFunction group_setup, CMFixtureFunction group_teardown) |
Run tests specified by an array of CMUnitTest structures and specify a name. | |
void | fail (void) |
Forces the test to fail immediately and quit. | |
void | fail_msg (const char *msg,...) |
Forces the test to fail immediately and quit, printing the reason. | |
int | run_test (#function) |
Generic method to run a single test. | |
void | skip (void) |
Forces the test to not be executed, but marked as skipped. |
This is the way tests are executed with CMocka.
The following example illustrates this macro's use with the unit_test macro.
void Test0(void **state); void Test1(void **state); int main(void) { const struct CMUnitTest tests[] = { cmocka_unit_test(Test0), cmocka_unit_test(Test1), }; return cmocka_run_group_tests(tests, NULL, NULL); }
#define cmocka_unit_test | ( | f | ) | { #f, f, NULL, NULL } |
Initializes a CMUnitTest structure.
#define cmocka_unit_test_setup | ( | f, | |||
setup | ) | { #f, f, setup, NULL } |
Initializes a CMUnitTest structure with a setup function.
#define cmocka_unit_test_setup_teardown | ( | f, | |||
setup, | |||||
teardown | ) | { #f, f, setup, teardown } |
Initialize an array of CMUnitTest structures with a setup function for a test and a teardown function.
Either setup or teardown can be NULL.
#define cmocka_unit_test_teardown | ( | f, | |||
teardown | ) | { #f, f, NULL, teardown } |
Initializes a CMUnitTest structure with a teardown function.
#define group_test_setup | ( | setup | ) | { "group_" #setup, setup, UNIT_TEST_FUNCTION_TYPE_GROUP_SETUP } |
Initializes a UnitTest structure for a group setup function.
#define group_test_teardown | ( | teardown | ) | { "group_" #teardown, teardown, UNIT_TEST_FUNCTION_TYPE_GROUP_TEARDOWN } |
Initializes a UnitTest structure for a group teardown function.
#define unit_test | ( | f | ) | { #f, f, UNIT_TEST_FUNCTION_TYPE_TEST } |
Initializes a UnitTest structure.
#define unit_test_setup | ( | test, | |||
setup | ) |
_unit_test_setup(test, setup), \ unit_test(test), \ _unit_test_teardown(test, _unit_test_dummy)
Initializes a UnitTest structure with a setup function.
#define unit_test_setup_teardown | ( | test, | |||
setup, | |||||
teardown | ) |
_unit_test_setup(test, setup), \ unit_test(test), \ _unit_test_teardown(test, teardown)
Initialize an array of UnitTest structures with a setup function for a test and a teardown function.
Either setup or teardown can be NULL.
#define unit_test_teardown | ( | test, | |||
teardown | ) |
_unit_test_setup(test, _unit_test_dummy), \ unit_test(test), \ _unit_test_teardown(test, teardown)
Initializes a UnitTest structure with a teardown function.
int cmocka_run_group_tests | ( | const struct CMUnitTest | group_tests[], | |
CMFixtureFunction | group_setup, | |||
CMFixtureFunction | group_teardown | |||
) |
Run tests specified by an array of CMUnitTest structures.
[in] | group_tests[] | The array of unit tests to execute. |
[in] | group_setup | The setup function which should be called before all unit tests are executed. |
[in] | group_teardown | The teardown function to be called after all tests have finished. |
static int setup(void **state) { int *answer = malloc(sizeof(int)); if (*answer == NULL) { return -1; } *answer = 42; *state = answer; return 0; } static int teardown(void **state) { free(*state); return 0; } static void null_test_success(void **state) { (void) state; } static void int_test_success(void **state) { int *answer = *state; assert_int_equal(*answer, 42); } int main(void) { const struct CMUnitTest tests[] = { cmocka_unit_test(null_test_success), cmocka_unit_test_setup_teardown(int_test_success, setup, teardown), }; return cmocka_run_group_tests(tests, NULL, NULL); }
int cmocka_run_group_tests_name | ( | const char * | group_name, | |
const struct CMUnitTest | group_tests[], | |||
CMFixtureFunction | group_setup, | |||
CMFixtureFunction | group_teardown | |||
) |
Run tests specified by an array of CMUnitTest structures and specify a name.
[in] | group_name | The name of the group test. |
[in] | group_tests[] | The array of unit tests to execute. |
[in] | group_setup | The setup function which should be called before all unit tests are executed. |
[in] | group_teardown | The teardown function to be called after all tests have finished. |
static int setup(void **state) { int *answer = malloc(sizeof(int)); if (*answer == NULL) { return -1; } *answer = 42; *state = answer; return 0; } static int teardown(void **state) { free(*state); return 0; } static void null_test_success(void **state) { (void) state; } static void int_test_success(void **state) { int *answer = *state; assert_int_equal(*answer, 42); } int main(void) { const struct CMUnitTest tests[] = { cmocka_unit_test(null_test_success), cmocka_unit_test_setup_teardown(int_test_success, setup, teardown), }; return cmocka_run_group_tests_name("success_test", tests, NULL, NULL); }
void fail_msg | ( | const char * | msg, | |
... | ||||
) |
int run_test | ( | # | function | ) |
Generic method to run a single test.
[in] | function | The function to test. |
// A test case that does nothing and succeeds. void null_test_success(void **state) { } int main(void) { return run_test(null_test_success); }