(私の英語は申し訳ありません)私はC++のコードから単体テストをしようとしています。次の関数(メニュー)では、()へのパラメータはありません。しかし、このファンクションにはscanfがあります。これはテストしたいのですが、どうやって作るのか分かりません。ユニットテスト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
}
コードは、私は次のコードのパラメータを使用している場合:あなたがCを使用している場合
...
TEST_METHOD(menu){
principal p; //this is the class --> not matter now
//test code
Assert::AreEqual(result, parameter to enter);
}
既存のコードを変更できますか?次に、menu()を2つの関数に分割する必要があります.1つはメニューを表示し、入力を読み取る関数、もう1つは入力に作用する関数です。これは簡単にテストできます。 – Rene
入力していない場合、* UXの場合:入力パラメータをテキストファイルに書き込み、入力リダイレクションを使用してテキストファイルにテストプログラムを実行した後、menu()を呼び出して結果をテストできます。同じファイルに複数の入力値を設定してから、menu()を複数回呼び出すこともできます。 (もちろん、fdupを使った他の、しかしより複雑な解決法があるでしょう) – Rene