我试图弄清楚,在 CUnit 中断言数组相等的最佳方法是什么。
到目前为止我考虑的可能性:
循环遍历数组元素并使用
CU_ASSERT_EQUAL
.只需
CU_ASSERT_EQUAL
在两个数组上使用。根据提到的文档,这不应该工作,因为CU_ASSERT_EQUAL
只是转换为==
. 实际上,以下测试会导致失败:
const uchar arr1[] = {1,2};
const uchar arr2[] = {1,2};
CU_ASSERT_EQUAL(arr1, arr2);
CU_ASSERT_NSTRING_EQUAL
似乎有效,但名称暗示它适用于字符串:
const uchar arr1[] = {1,2};
const uchar arr2[] = {1,2};
CU_ASSERT_NSTRING_EQUAL(arr1, arr2, 2); /* succeeds: OK */
const uchar arr1[] = {1,3};
const uchar arr2[] = {1,2};
CU_ASSERT_NSTRING_EQUAL(arr1, arr2, 2); /* fails: OK */
我最倾向于使用CU_ASSERT_NSTRING_EQUAL
.
所以问题的问题如下:
- 除了(稍微)误导的名称之外,该解决方案是否
CU_ASSERT_NSTRING_EQUAL
有任何缺点?(我知道字符串只是数组,以 . 结尾\0
。) - 这个问题有更好的解决方案吗?
注意:在我能找到的相关问题/答案中,还建议对元素进行迭代(尽管我不认为这与我的问题重复,因为它没有直接询问检查平等的最佳方法是什么一般的数组)。