编译不通过!因为没有Guesser类。没有Guess方法。
  为了让CASE过。我们必须创建Guesser类以及Guess方法。
public class Guesser
{
public string Guess(string inputNumber)
{
throw new System.NotImplementedException();
}
}
  现在编译没错误了。在Run。
  有异常:System.NotImplementedException: The method or operation is not implemented.
  闹心。为了不闹心。Guess方法里简单实现。简单的是直接返回"4a0b"。这里还是简单的实现实现。
public class Guesser
{
private const string AnswerNumber = "2975";
public string Guess(string inputNumber)
{
var ACount = 0;
var BCount = 0;
for (var index = 0; index < AnswerNumber.Length; index++)
{
if (AnswerNumber[index]==inputNumber[index])
{
ACount++;
}
}
return string.Format("{0}a{1}b", ACount, BCount);
}
}

  OK。但是我们内部实现如此简单。不知道是否满足第二个CASE呢。
  完成一个CASE要把它划掉。
  To-Do-List:
  输入“2975” 输出4a0b。
  输入“2957” 输出2a2b。
  输入“9257” 输出0a4b。
  输入“1348” 输出0a0b。
  完成Guesser类.
  来第二个CASE:输入9257与答案不匹配,但是所有数字都正确,输出0a4b 。
  有了第一个CASE的经验,这里我们也同样注意命名。
[TestMethod]
public void should_return_2a2b_when_input_numbers_all_figures_right_and_2_positions_right()
{
var inputNumber = "2957";
var actual = new Guesser().Guess(inputNumber);
Assert.AreEqual("2a2b", actual);
}
Run.....
  没有PASS:Assert.AreEqual failed. Expected:<2a2b>. Actual:<2a0b>.
  我们接着去改guess方法,保证第二个CASE PASS。
public class Guesser
{
private const string AnswerNumber = "2975";
public string Guess(string inputNumber)
{
var aCount = 0;
var bCount = 0;
for (var index = 0; index < AnswerNumber.Length; index++)
{
if (AnswerNumber[index]==inputNumber[index])
{
aCount++;
continue;
}
if (AnswerNumber.Contains(inputNumber[index].ToString()))
{
bCount++;
}
}
return string.Format("{0}a{1}b", aCount, bCount);
}
}
  运行所有CASE...pass.别忘记划掉To-Do-List