FizzBuzz game involcing C$
本文关键字:involcing game FizzBuzz | 更新日期: 2023-09-27 18:37:15
以下错误为:
错误和故障:1)测试失败:嘶嘶声。FizzBuzzTest.TestInput15 预期的字符串长度为 8,但为 4。字符串在索引 0 处有所不同。 预期:"嘶嘶嘶声" 但是是:"嗡嗡" -----------^
在嘶嘶声。FizzBuzzTest.TestInput15 () [0x00000] in :0
2)测试失败:嘶嘶声。FizzBuzzTest.TestInputOneHundredAndFive 预期的字符串长度为 8,但为 4。字符串在索引 0 处有所不同。 预期:"嘶嘶嘶声" 但是是:"嗡嗡" -----------^
在嘶嘶声。FizzBuzzTest.TestInputOneHundredAndFive () [0x00000] in :0
错误的直接原因是您在命名空间名称后省略了{
:
namespace fizzbuzz { // <- this "{"
public class FizzBuzz {
...
}
} // <- and this "}"
然而,即使你修改了这个错别字,你也会面临另一个错别字(你不能创建一个静态类的实例,FizzBuzz
不需要构造函数等);让我们从一个测试开始,说这个:
[Test]
public void TestInputOneHundred() {
FizzBuzz fizzbuzz = new FizzBuzz(100);
Assert.AreEqual("Buzz", fizzbuzz.ToString());
}
您正在创建FizzBuzz
isntance,然后调用ToString()
。所以你必须实现这样的东西:
namespace fizzbuzz { // <- do not forget "{"
// Not static! You (== your test) want to create instances
public class FizzBuzz {
// create, passing int (exactly as test wants)
public FizzBuzz(int value) {
Value = value;
}
// ToString will want the value
public int Value {get; set;}
// ToString to call in the test
public override ToString() {
if (Value % 5 == 0)
return "Buzz";
return Value.ToString();
}
}
}
测试通过了。运行另一个,例如
[Test]
public void TestInputThree() {
FizzBuzz fizzbuzz = new FizzBuzz(3);
Assert.AreEqual("Fizz", fizzbuzz.ToString());
}
要传递这个,你必须ToString()
修改为
public override ToString() {
if (Value % 5 == 0)
return "Buzz";
else if (Value % 3 == 0) // for the 2nd test
return "Fizz";
return Value.ToString();
}
依此类推,直到所有测试都通过。