首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CUnit CU_register_suites(套件)错误

CUnit CU_register_suites(套件)错误
EN

Stack Overflow用户
提问于 2018-07-20 01:48:09
回答 2查看 335关注 0票数 0

我正在用CUnit测试这段代码。我收到以下错误消息:

/bin/sh:第1行: 44477分段错误: 11 ./build/Debug/GNU/test/TestFiles/f2

错在哪里?我看不到它。有人能告诉我为什么我会犯这个错误吗。

提前感谢

错在哪里?我看不到它。有人能告诉我为什么我会犯这个错误吗。

提前感谢

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <CUnit/Basic.h>
#include <CUnit/TestDB.h>

int add(int a, int b) {
    return a + b;
}

int init_suite(void) {
    return 0;
}

int clean_suite(void) {
    return 0;
}

void test1() {
     CU_ASSERT(add(2, 2) == 4);
}

void test2() {
    CU_ASSERT(add(2, 3) == 5);
}

CU_TestInfo test_array1[] = {
    { "add/test1", test1},
    { "add/test2", test2},
    CU_TEST_INFO_NULL,
};


CU_TestInfo test_array2[] = {
    { "add/test3", test1},
    { "add/test4", test2},
    CU_TEST_INFO_NULL,
};


CU_SuiteInfo suites[] = {
    { "suit1", init_suite, clean_suite, test_array1},
    { "suit2", init_suite, clean_suite, test_array2},
    CU_SUITE_INFO_NULL,
};

int main() {

/* initialize the CUnit test registry */
if (CUE_SUCCESS != CU_initialize_registry())
    return CU_get_error();

/* Add a suite to the registry */
if (CUE_SUCCESS != CU_register_suites(suites)) {
    CU_cleanup_registry();
    return CU_get_error();
}

/* Run all tests using the CUnit Basic interface */
CU_basic_set_mode(CU_BRM_VERBOSE);
CU_basic_run_tests();
CU_basic_show_failures(CU_get_failure_list());
printf("\n");

CU_cleanup_registry();
return CU_get_error();
}
EN

回答 2

Stack Overflow用户

发布于 2019-06-16 01:22:49

如果您在最近的cunit版本(即2.1 )上遇到这个问题,那么分段错误应该来自代码片段中定义不明确的CU_SuiteInfo

代码语言:javascript
复制
CU_SuiteInfo suites[] = {
    { "suit1", init_suite, clean_suite, test_array1},
    { "suit2", init_suite, clean_suite, test_array2},
    CU_SUITE_INFO_NULL,
};

一个最近的变化将两个新的属性pSetUpFuncpTearDownFunc添加到CU_SuiteInfo接口中,因此您必须声明您的套件,如

代码语言:javascript
复制
int setup_suite(void) { return 0; }
int teardown_suite(void) { return 0; }

CU_SuiteInfo suites[] = {
    { "suit1", init_suite, clean_suite, setup_suite, teardown_suite, test_array1},
    { "suit2", init_suite, clean_suite, setup_suite, teardown_suite, test_array2},
    CU_SUITE_INFO_NULL,
};

海事组织,它们应该在2.1小版本上保持接口兼容性。但这是9年前的一个变化。还要注意的是,对于CU_SuiteInfo的界面更改,文档网站已经过时了.

票数 0
EN

Stack Overflow用户

发布于 2022-11-18 08:44:43

setup_suite和teardown_suite的签名必须是:

代码语言:javascript
复制
void setup_suite(void) { return; }
void teardown_suite(void) { return; }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51433966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档