【发布时间】:2016-11-04 12:07:53
【问题描述】:
(对不起我的英语)我正在尝试从 C++ 代码中进行单元测试。在下一个函数(菜单)中,()中没有任何参数。但是在这个功能中有一个scanf,我想测试它,但我不知道如何制作它。
我可以从单元测试中测试 scanf 吗?
谢谢。
函数代码:
void principal::menu()
{
int choice;
system("cls");
printf("\n--------MENU--------");
printf("\n1 : Jugador X");
printf("\n2 : Jugador O");
printf("\n3 : Sortir");
printf("\nTria el tipus de jugador: ");
scanf_s("%d", &choice);
turn = 1;
switch (choice)
{
case 1:
player = 1;
comp = 0;
player_first();
break;
case 2:
player = 0;
comp = 1;
start_game();
break;
case 3:
exit(1);
default:
menu();
}
}
测试代码:
...
TEST_METHOD(menu){
principal p; //this is the class --> not matter now
//test code
}
如果代码有参数我使用下一个代码:
...
TEST_METHOD(menu){
principal p; //this is the class --> not matter now
//test code
Assert::AreEqual(result, parameter to enter);
}
【问题讨论】:
-
可以修改现有代码吗?然后你应该将 menu() 分成两个函数,一个显示菜单并读取输入,另一个作用于输入,这样就很容易测试了。
-
如果不是,并且您在 *UX:将输入参数写入文本文件,运行测试程序并将输入重定向到文本文件,然后您可以调用 menu() 并进行测试结果。您也可以在同一个文件中有多个输入值,然后多次调用 menu()。 (当然还有其他的,但是使用 fdup 的更复杂的解决方案)
标签: c++ visual-studio unit-testing testing