テスト駆動型の開発割り当て用のテストスイートが提供されました。プログラムはロック、ペーパー、はさみのゲームをプレイし、実際のプログラムの骨格コードも与えられました。私はテストスイートを変更するつもりはありませんが、代わりにテストをパスするように実際のプログラムでコードを変更したり変更したりしなければなりません。私はgetInputメソッドを通過する際に問題を抱えています。 これは、実際のプログラムのコードです:テスト駆動型開発、Java、アサーションエラーで固執
public static char getInput(String prompt, char[] options, Scanner sc) {
// getInput method
// prompts user for an input that matches one of the given characters
// if its not one of those, repeat. (use contains (above))
char c;
boolean flag = false;
do {
c = sc.next().charAt(0);
if (contains(c, options)) {
System.out.println(prompt + " (y, n, q):");
flag = true;
}
}
while (!flag);
return c;
}
これは、か、getInputメソッドをテストするためのテストスイートの方法である: `
private static void testGetInput() {
OutputStream out;
out = resetSystemOut();
assert 'y' == RPS.getInput("Choose", new char[] {'y','n','q'}, new Scanner("y\n"));
assertOutput("Choose (y, n, q):\n", out);
out = resetSystemOut();
assert 'n' == RPS.getInput("Alice", new char[] {'y','n','q'}, new Scanner("n\n"));
assertOutput("Alice (y, n, q):\n", out);
out = resetSystemOut();
assert 'q' == RPS.getInput("Bob", new char[] {'y','n','q'}, new Scanner("q\n"));
assertOutput("Bob (y, n, q):\n", out);
out = resetSystemOut();
assert 'q' == RPS.getInput("Cloe", new char[] {'y','n','q'}, new Scanner("x\nw\nq\n")); //line 81
assertOutput("Cloe (y, n, q):\n" +
"Cloe (y, n, q):\n" +
"Cloe (y, n, q):\n", out);
out = resetSystemOut();
assert 'v' == RPS.getInput("Doug", new char[] {'v'}, new Scanner("vvvv\nv\n"));
assertOutput("Doug (v):\n" +
"Doug (v):\n", out);
}
は、これは私が取得していますエラーです:
Exception in thread "main" java.lang.AssertionError: 54 18
Cloe (y, n, q):
Cloe (y, n, q):
Cloe (y, n, q):
Cloe (y, n, q):
at RPSTester.assertOutput(RPSTester.java:226)
at RPSTester.testGetInput(RPSTester.java:81)
at RPSTester.main(RPSTester.java:25) //line 25 has a call to the testGetInput method
私は就業時間中に講師を訪問しましたが、その質問に対する答え全体を明らかにする前に教えてくれる人がいます。私は何か助け、ヒント、私の間違いの指摘に感謝します。何かが評価されます。
私はテストスイートを変更することはできませんが、テストスイートのアサーションを渡すためにgetInputメソッドのコードを変更する必要があります – dianite1337
それに応じて私の応答を更新 – ayip