gpt4 book ai didi

c# - 删除测试驱动开发中的重复

转载 作者:行者123 更新时间:2023-11-30 20:10:21 25 4
gpt4 key购买 nike

我正在开发一个小型解析器类 TDD 样式。这是我的测试:

    ...

[TestMethod]
public void Can_parse_a_float() {
InitializeScanner("float a");
Token expectedToken = new Token("float", "a");

Assert.AreEqual(expectedToken, scanner.NextToken());
}

[TestMethod]
public void Can_parse_an_int() {
InitializeScanner("int a");
Token expectedToken = new Token("int", "a");

Assert.AreEqual(expectedToken, scanner.NextToken());
}

[TestMethod]
public void Can_parse_multiple_tokens() {
InitializeScanner("int a float b");

Token firstExpectedToken = new Token("int", "a");
Token secondExpectedToken = new Token("float", "b");

Assert.AreEqual(firstExpectedToken, scanner.NextToken());
Assert.AreEqual(secondExpectedToken, scanner.NextToken());
}

让我烦恼的是,最后一个测试执行的代码行与 Can_parse_a_float()Can_parse_an_int() 相同。一方面,它正在执行这两种方法都没有执行的操作:从源代码字符串中,我可以获得多个标记。另一方面,如果 Can_parse_a_float()Can_parse_an_int() 失败,Can_parse_multiple_tokens() 也会失败。

我觉得这里有 4 个目标:

  • 我希望我的测试表明我的解析器 解析整数
  • 我希望我的测试表明我的Parser 解析 float
  • 我希望我的测试表明我的解析器 可以连续解析多个整数/ float
  • 我希望我的测试也能很好地用作文档机制 (!)

我向任何分享他关于如何更好地处理这种情况的意见的人提供 cookie。谢谢!

最佳答案

所以,我的问题是——当您编写通过前两个测试的代码时,您是做了尽可能简单的事情,还是在知道第三个要求(测试)的情况下继续工作?如果您编写了尽可能简单的代码并且它在没有编写新代码的情况下通过了第三次测试,那么该测试就没有必要了。如果您必须修改代码,则需要第三次测试并用于定义代码。是的,它们现在都在执行相同的代码行,但是既然您已经编写了第三个测试,那么这些行(应该)不同。我认为这没有问题。

关于c# - 删除测试驱动开发中的重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5205757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com