C 范围指针问题中的单元测试

问题描述 投票:0回答:0

我正在尝试使用 Ceedling 在 C 中实施单元测试。

struct Person *list;
/* TASK_FIND_BY */
void test_main_task_find_by_normal(void)
{
    char *string = (char *)malloc(sizeof(char));
    struct Person new_list_instance;
    struct Person *new_list = &new_list_instance;
    ask_input_ExpectAndReturn(string);
    llist_find_by_ExpectAndReturn(list, string, new_list);
    llist_print_Expect(new_list);
    llist_remove_all_Expect(&new_list);

    printf("\nOutside single: %p\n", new_list);
    printf("Outside double: %p\n", &new_list);

    task_find_by(list);
}
void task_find_by(struct Person *list)
{
    char *input = NULL;
    struct Person *new = NULL;

    printf("Input exact name/surname/email/phone: ");
    input = ask_input();
    if (input == NULL) {
        printf("Error!");
        return;
    }
    new = llist_find_by(list, input);
    if (new != NULL)
        llist_print(new);
    else 
        printf("Address not found!\n");
    
    printf("\nInside single: %p\n", new);
    printf("Inside double: %p\n", &new);
    
    free(input);
    llist_remove_all(&new);
}

我希望

task_find_by
中的函数使用与此处相同的参数调用:
llist_remove_all_Expect(&new_list)
。 但是实际的函数是用
new
指针的地址调用的,其中
new
保存着
new_list
。由于
new_list
new
是不同的指针,它们的地址是不同的。有没有什么方法可以在不改变
task_find_by
函数的实现的情况下测试被调用的参数?

  - "Outside single: 0x7ffc2e3c03d0"
  - "Outside double: 0x7ffc2e3c03c0"
  - "Inside single: 0x7ffc2e3c03d0"
  - "Inside double: 0x7ffc2e3c0398"
c unit-testing pointers ceedling
© www.soinside.com 2019 - 2024. All rights reserved.