测试驱动开发TDD(1)
作者:网络转载 发布时间:[ 2014/1/16 10:49:02 ] 推荐标签:测试驱动 驱动开发 TDD
编译不通过!因为没有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
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11