私は単体テストの初心者で、VS 2010 単体テスト フレームワークを使用しています。
ユーザーから整数を取得し、ユーザー入力に基づいてさまざまな関数を実行する関数があります。単体テストについて多くのことを読みましたが、switch ステートメントの各ブランチをテストする方法を示すものは見つかりませんでした。私がこれまでに持っているもの:
[TestMethod]
public void RunBankApplication_Case1()
{
using (var sw = new StringWriter())
{
using (var sr = new StringReader("1"))
{
Console.SetOut(sw);
Console.SetIn(sr);
BankManager newB = new BankManager();
newB.RunBankApplication();
var result = sw.ToString();
string expected = "Enter Account Number: ";
Assert.IsTrue(result.Contains(expected));
}
}
}
ケース 1 の関数が呼び出されると、最初に文字列 "Enter Account Number: " がコンソールに書き込まれます。ただし、これはまったく機能していません。入力をコンソールに正しく渡していませんか? 助けてくれてありがとう!
編集: 私の RunBankApplication() 関数:
do
{
DisplayMenu();
option = GetMenuOption();
switch (option)
{
case 1:
if (!CreateAccount())
{
Console.WriteLine("WARNING: Could not create account!");
}
break;
case 2:
if (!DeleteAccount())
{
Console.WriteLine("WARNING: Could not delete account!");
}
break;
case 3:
if (!UpdateAccount())
{
Console.WriteLine("WARNING: Could not update account!");
}
break;
case 4: DisplayAccount();
break;
case 5: status = false;
break;
default: Console.WriteLine("ERROR: Invalid choice!");
break;
}
} while (status);