单元测试 – 如果修复涉及更改测试签名下的方法,如何使用TDD?

前端之家收集整理的这篇文章主要介绍了单元测试 – 如果修复涉及更改测试签名下的方法,如何使用TDD?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图了解TDD方法并且遇到 – 我认为是 – 鸡和鸡蛋问题:如果错误修复涉及更改方法的签名该怎么办.

请考虑以下方法签名:

string RemoveTokenFromString (string delimited,string token)

顾名思义,此方法从分隔中删除令牌的所有实例,并返回结果字符串.

我后来发现这个方法有一个错误(例如,从字符串中删除错误的位).因此,我编写了一个测试用例,描述了发生错误的场景,并确保测试失败.

修复错误时,我发现该方法需要更多信息才能正常工作 – 这些信息只能作为参数发送(被测方法是静态类的一部分).

那我该怎么办?如果我修复了这个bug,这迫使我改变单元测试 – 这是’正确的’TDD方法吗?

当您发现设备的预期行为发生变化时,对您的测试进行轰炸绝对没有错.
//Up front
[Test]
public void should_remove_correct_token_from_string()
{
  var text = "do.it.correctly..";
  var expected = "doitcorrectly";
  Assert.AreEqual(StaticClass.RemoveTokenFromString(text,"."),expected);
}

//After finding that it doesn't do the right thing
//Delete the old test and *design* a new function that
//Does what you want through a new test
//Remember TDD is about design,not testing!
[Test]
public void should_remove_correct_token_from_string()
{
  var text = "do.it.correctly..";
  var expected = "doitcorrectly";
  Assert.AreEqual(
      StaticClass.RemoveTokenFromString(
          text,".",System.Text.Encoding.UTF8),expected);
}

//This will force you to add a new parameter to your function
//ObvIoUsly now,there are edge cases to deal with your new parameter etc.
//So more test are required to further design your new function

猜你在找的设计模式相关文章