gpt4 book ai didi

c# - 隐式类型和 TDD

转载 作者:太空狗 更新时间:2023-10-29 23:27:35 25 4
gpt4 key购买 nike

我刚读到这个post当开始测试驱动的开发/设计时,它提出了反对使用隐式类型的案例。

他的帖子说,在对方法进行单元测试时对返回类型使用隐式类型时,TDD 可能会“变慢”。此外,他似乎想要测试指定的返回类型以插入开发(这对我来说很有意义)。

带有隐式类型的给定单元测试可能如下所示:

public void Test_SomeMethod()
{
MyClass myClass = new MyClass();

var result = myClass.MethodUnderTest();
Assert.AreEqual(someCondition, result);
}

所以我的问题是:

使用隐式类型有助于还是阻碍为 TDD 编写单元测试?有没有人可以在编写单元测试时分享他们使用这种技术的经验?

我问这个是因为很快我还没有完成 TDD,想知道是否有一种方法可以编写通用或半通用的单元测试,返回类型可能会改变。

最佳答案

我明白他的意思,但我真的不认为这是不在这里使用 var 的正确理由。请记住,TDD 大致按照以下方式工作:

  1. 编写一个新测试。
  2. 如果测试编译失败(它应该会失败!),编写足够的代码直到测试编译。
  3. 运行所有测试。
  4. 如果测试失败,编写足够的代码直到所有测试都通过。
  5. 重构。

无论我们是否使用 var,测试都将无法编译,因为被测试的方法还不存在!。一旦我们开始编写 NewMethod,他的观点就没有实际意义了。

相反,这里不使用 var 的正确原因是因为代码没有给出 result 类型的指示。这是一个见仁见智的问题,但 var 在这里没问题

var dict = new Dictionary<Foo, List<Bar>>();

和匿名类型但不是这里

var m = M();

因为如果不去 M 的声明(或使用 IntelliSense)就完全不清楚 M 的返回类型是什么。

关于c# - 隐式类型和 TDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2140654/

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