测试驱动开发TDD(1)

发表于:2014-1-15 11:56

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:crazy_itman    来源:51Testing软件测试网采编

  编译不通过!因为没有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
32/3<123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号