以下错误是:
错误和失败: 1)测试失败:fizzbuzz.FizzBuzzTest.TestInputFifteen 预期字符串长度为8但为4.字符串在索引0处不同。 预期:" FizzBuzz" 但是:" Buzz" ----------- ^
在fizzbuzz.FizzBuzzTest.TestInputFifteen()[0x00000]中:0
2)测试失败:fizzbuzz.FizzBuzzTest.TestInputOneHundredAndFive 预期字符串长度为8但为4.字符串在索引0处不同。 预期:" FizzBuzz" 但是:" Buzz" ----------- ^
在fizzbuzz.FizzBuzzTest.TestInputOneHundredAndFive()[0x00000]中:0
答案 0 :(得分:0)
错误的直接原因是您在命名空间名称后省略了{
:
namespace fizzbuzz { // <- this "{"
public class FizzBuzz {
...
}
} // <- and this "}"
然而即使你修改了这个错字,你也要面对另一个错误(你不能创建一个静态类的实例,FizzBuzz
没有&#39; t必需的构造函数等);让从测试开始,比如说这个:
[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();
}
依此类推,直到所有测试都通过。