涉及 C$ 的 FizzBu​​zz 游戏

FizzBuzz game involcing C$

下面的错误是:

错误和失败: 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

错误的直接原因是您在命名空间名称后省略了 {

  namespace fizzbuzz { // <- this "{"
    public class FizzBuzz {    
      ...
    }
  } // <- and this "}"

然而,即使您修改了这个拼写错误,您仍将面临另一个拼写错误(您无法创建 static class、FizzBuzz 不需要构造函数等);让我们从一个测试开始,说这个:

[Test]
public void TestInputOneHundred() {
    FizzBuzz fizzbuzz = new FizzBuzz(100);
    Assert.AreEqual("Buzz", fizzbuzz.ToString());
}

您正在创建 FizzBuzz 实例,然后调用 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(); 
}

以此类推,直到所有测试都通过。