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

FizzBuzz game involcing C$

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

  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(); 
}

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