CUnit断言断言 `((void *)0) != f_pCurSuite'失败

标签 c unit-testing cunit

我的代码是这样的:

#include <CUnit/CUnit.h>


int maxi(int i1, int i2)
{
    return (i1 > i2) ? i1 : i2;
}

void test_maxi(void)
{
    CU_ASSERT(maxi(0,2) == 2);
}

int main() {
    test_maxi();
    return 0;
}

我在 Ubuntu 上使用 gcc test.c -o test -lcunit 编译了它。

我在尝试启动它时遇到此错误:

test: TestRun.c:159: CU_assertImplementation: Assertion `((void *)0) != f_pCurSuite' failed. Aborted (core dumped)

这是什么意思?我在互联网上一无所获。

最佳答案

CUnit 适用于测试套件,您需要先创建才能运行应用程序。

使测试正常工作的一种非常基本的方法如下所示:

#include <CUnit/CUnit.h>
#include <CUnit/Basic.h>

int maxi(int i1, int i2)
{
    return (i1 > i2) ? i1 : i2;
}

void test_maxi(void)
{
    CU_ASSERT(maxi(0,2) == 2);
}

int main() {
    CU_initialize_registry();
    CU_pSuite suite = CU_add_suite("maxi_test", 0, 0);

    CU_add_test(suite, "maxi_fun", test_maxi);

    CU_basic_set_mode(CU_BRM_VERBOSE);
    CU_basic_run_tests();
    CU_cleanup_registry();

    return 0;
}

没有所有必需的检查,但正如 Joachim Pileborg 在评论中建议的那样,遵循提供的示例代码会更安全。

关于CUnit断言断言 `((void *)0) != f_pCurSuite'失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38183974/

相关文章:

python - 模拟 Django 模型和 save()

java - mockServer andExpect(content().XML 与当前日期连接

gcc - 如何在没有优化的情况下将 gcov 与 gcc 一起使用?

c - C 中如何处理字符串?

.net - 单元测试还是功能测试?

c - 加载共享库时出错 - 在 Netbeans 上使用 CUnit

teamcity - 整合Cunitino团队城市

c - Linux - 串口行为不同于套接字

c# - SWIG:如何将指定的 C# 代码块添加到所有生成的 C# 方法

android - 如何判断共享库在进程地址空间中的加载位置?