cunit中有类似于CU_ASSERT_EQUAL这样的,直接触发assert的宏吗?
CUnit 是一个用于 C 语言的单元测试框架,它提供了一些宏来帮助编写测试用例。CU_ASSERT_EQUAL
是其中一个常用的宏,用于断言两个值是否相等。如果不相等,它会记录一个失败,但不会立即中止测试。
如果你想要在断言失败时立即中止测试,可以使用 CU_ASSERT_FATAL
系列的宏。这些宏在断言失败时会立即停止当前测试函数的执行。
例如,CU_ASSERT_FATAL_EQUAL
可以用于断言两个值是否相等,并在失败时立即中止测试。
以下是一些常用的 CU_ASSERT_FATAL
宏:
CU_ASSERT_FATAL(condition)
: 断言条件是否为真。CU_ASSERT_FATAL_EQUAL(actual, expected)
: 断言两个值是否相等。CU_ASSERT_FATAL_NOT_EQUAL(actual, expected)
: 断言两个值是否不相等。CU_ASSERT_FATAL_PTR_NULL(pointer)
: 断言指针是否为 NULL。CU_ASSERT_FATAL_PTR_NOT_NULL(pointer)
: 断言指针是否不为 NULL。示例代码:
#include <CUnit/CUnit.h>
#include <CUnit/Basic.h>
void test_example() {
int a = 5;
int b = 10;
CU_ASSERT_EQUAL(a, 5); // 仅记录失败,不中止测试
CU_ASSERT_FATAL_EQUAL(a, b); // 断言失败时立即中止测试
}
int main() {
CU_initialize_registry();
CU_pSuite pSuite = CU_add_suite("Suite_1", 0, 0);
CU_add_test(pSuite, "test_example", test_example);
CU_basic_set_mode(CU_BRM_VERBOSE);
CU_basic_run_tests();
CU_cleanup_registry();
return 0;
}
在这个示例中,如果 CU_ASSERT_FATAL_EQUAL(a, b)
断言失败,test_example
函数将立即中止