为什么在Cunit框架使用 -C "test_case_1"还是会所有用例都跑到
时间: 2023-12-31 08:06:43 浏览: 206
如果在使用CUnit框架时,指定了-C选项并且指定了要运行的测试用例名称,但是所有的测试用例都被执行了,可能有以下几个原因:
1. 测试用例名称不正确:确保指定的测试用例名称是正确的,名称必须完全匹配,大小写敏感。
2. 测试用例没有被正确添加到测试集中:在使用CUnit框架时,测试用例需要被添加到测试集中,否则CUnit将无法识别测试用例。确保使用CU_add_test()函数将测试用例添加到测试集中。
3. 测试用例被添加到了多个测试集中:如果一个测试用例被添加到了多个测试集中,当使用-C选项指定运行测试用例时,CUnit将会运行该测试用例在所有测试集中的实例。确保每个测试用例只被添加到一个测试集中。
4. 测试用例存在依赖关系:如果一个测试用例依赖于其他测试用例的运行结果,当使用-C选项指定运行该测试用例时,CUnit将会自动运行该测试用例依赖的其他测试用例。确保测试用例之间不存在依赖关系。
如果以上解决方法都无效,可以检查一下CUnit版本是否正确,或者尝试重新编译测试代码。
相关问题
#include <stdint.h> #include <stdio.h> #include <string.h> #include <aos/aos.h> #include <aos/cli.h> #include "cunit_test_include/CUnit.h" #include "cunit_test_include/Basic.h" // 测试用例 1 void test_case_1(void) { int a = 1; int b = 2; //printf("for test test_case_1\n"); CU_ASSERT(a + b == 3); } // 测试用例 2 void test_case_2(void) { int c = 3; int d = 4; //printf("for test test_case_2\n"); CU_ASSERT(c * d == 10); } // 测试套件初始化函数 int init_suite(void) { return 0; } // 测试套件清理函数 int clean_suite(void) { return 0; } // 测试套件 CU_TestInfo tests[] = { {"test_case_1", test_case_1}, {"test_case_2", test_case_2}, CU_TEST_INFO_NULL }; // 测试套件初始化函数 CU_InitializeFunc initialize_suite = init_suite; // 测试套件清理函数 CU_CleanupFunc cleanup_suite = clean_suite; // 测试套件注册函数 void add_test_suite(void) { CU_pSuite suite; suite = CU_add_suite("Test Suite", initialize_suite, cleanup_suite); CU_add_test(suite, "test_case_1", test_case_1); CU_add_test(suite, "test_case_2", test_case_2); } static void test_cunit(int argc, char *argv[]) { // 初始化 CUnit 测试框架 CU_initialize_registry(); // 注册测试套件 add_test_suite(); // 运行所有测试 CU_basic_run_tests(); // 输出测试结果 CU_basic_show_failures(CU_get_failure_list()); // 清理 CUnit 测试框架 CU_cleanup_registry(); printf("\n"); } void test_cunit_init(void) { static const struct cli_command cmd_info = { "cunit", "test cunit", test_cunit }; aos_cli_register_command(&cmd_info); }为什么没有使用到测试套件tests
虽然代码中定义了一个测试套件 tests,但是实际上并没有直接使用到它。这是因为 CUnit 测试框架提供了多种注册测试用例和测试套件的方式,而本例中使用的是 CU_add_suite() 和 CU_add_test() 函数来注册测试用例和测试套件。
具体来说,CU_add_suite() 函数用于注册一个测试套件,它需要指定测试套件的名称、初始化函数和清理函数。而 CU_add_test() 函数则用于向指定测试套件中添加一个测试用例,它需要指定测试用例的名称和测试函数。
在本例中,测试套件的注册是通过 add_test_suite() 函数实现的,它调用了 CU_add_suite() 和 CU_add_test() 函数来注册测试用例和测试套件。因此,虽然 tests 数组定义了一个测试套件,但是在实际运行中并没有被使用到。
// 测试套件 CU_TestInfo tests[] = { {"test_case_1", test_case_1}, {"test_case_2", test_case_2}, CU_TEST_INFO_NULL };在Cunit架构的用法,代码说明
这段代码是使用 CUnit 测试框架时注册测试套件的一种常见方式。其中,CU_TestInfo 是一个结构体,它包含两个成员变量:一个字符串表示测试用例的名称,一个函数指针指向测试函数。
tests[] 数组是一个 CU_TestInfo 结构体数组,它包含了两个测试用例 "test_case_1" 和 "test_case_2",分别对应着 test_case_1() 和 test_case_2() 两个测试函数。CU_TEST_INFO_NULL 是一个表示该测试套件结束的标志,用于告诉 CUnit 测试框架该测试套件中已经没有测试用例了。
在使用 CUnit 测试框架时,我们通常需要定义测试套件和测试用例,然后将它们注册到 CUnit 测试框架中。可以通过 CU_add_suite() 和 CU_add_test() 函数来注册测试套件和测试用例,也可以通过 CU_register_suites() 函数来批量注册多个测试套件。
在本例中,tests[] 数组定义了一个测试套件,它包含了两个测试用例。在实际运行中,可以通过 CU_register_suites() 函数将这个测试套件注册到 CUnit 测试框架中,然后运行所有注册的测试。
阅读全文