gpt4 book ai didi

C - 忽略 CUnit 中的用户输入?

转载 作者:行者123 更新时间:2023-11-30 17:23:28 25 4
gpt4 key购买 nike

我一直在寻找答案,但还没有找到。问题是,我需要为我用 C 编写的程序做一些测试用例。问题是,某些函数接受用户输入,这使得我的测试用例等待输入,这不是我想要的。

这是我的测试用例之一:

void test_is_location_free() {
Storage test_storage = new_storage();
Item test_item;
test_storage->inventory[5] = test_item;
test_storage->inventory[5].loc.shelf = 'A';
test_storage->inventory[5].loc.place = 1;

CU_ASSERT(!is_location_free(test_storage, test_item, 'A', 1));
}

这是有效的,因为 is_location_free() 将返回 false,但在函数内部我有另一个函数,它将不断询问用户新的输入,直到所选位置空闲。

这就是它在终端中的样子,它将等待新的用户输入架子:

Suite: HELPER FUNCTIONS
Test: compare_char() ...passed
Test: first_empty_position() ...passed
Test: is_location_free() ...Location not empty, try again!
Shelf:

有什么方法可以忽略所有用户输入,或者定义我的测试用例将使用的 future 用户输入?

谢谢!

最佳答案

假设您的代码从标准输入流获取用户输入,您可以将数据写入文件,并在调用 is_location_free 函数之前临时更改标准输入以从该文件读取。

我认为如果从终端(/dev/tty)读取用户输入,同样的想法也可以起作用,但需要更多的努力。

注意:在这种特殊情况下,我建议重构您的代码,以便 is_location_free 函数只执行其名称所暗示的功能。那么测试起来就很容易了。编写第二个函数来添加在第一个位置不起作用时提示用户的行为。您可以选择不对第二个函数进行 CUnit 测试。

关于C - 忽略 CUnit 中的用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27552671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com