0

我的代码如下所示:

#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;
}

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

尝试启动它时出现此错误:

测试:TestRun.c:159:CU_assertImplementation:断言“((void *)0)!= f_pCurSuite”失败。中止(核心转储)

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

4

1 回答 1

2

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 在评论中建议的那样,遵循提供的示例代码更安全。

于 2016-07-04T11:58:23.837 回答