Непосредственной причиной ошибки является то, что вы опущена {
после имени пространства имен:
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();
}
И так далее, пока все испытания не проходят.
Пожалуйста, укажите ошибки * в вопросе *. Я также настоятельно рекомендую вам узнать о проверенных данными тестах - в каждом тесте код одинаковый, поэтому вы можете просто использовать '[TestCase (...)]', чтобы сделать это лучше. –
@DmitryBychenko: Я не понимаю, почему, если честно ... –
Я считаю, что проблема заключается, вероятно, в простом '' 'после объявления пространства имен во втором файле. Это, конечно, не похоже, что это ошибка, которая действительно является fizzbuzz или nunit-specific. –