gpt4 book ai didi

c# - 关于 TDD 的知识漏洞

转载 作者:行者123 更新时间:2023-11-30 22:31:59 26 4
gpt4 key购买 nike

我制作了一个列表(在示例测试驱动开发中称为“测试列表”),我将从中选择一个测试来实现。

所以我启动 Visual Studio,创建一个新的解决方案,为单元测试添加一个项目,然后......我需要想出一个类,我将在其中放置我选择的测试的测试方法列表。

这就是我卡住的地方。我怎么知道我需要哪个类,如何命名它以及如何知道它是否正确?这是需要事先考虑的事情吗?

最佳答案

您读过 Kent Beck - TDD 吗?不要试图提前解决所有问题。投入其中,做某事,让它发挥作用,不管它是什么,然后你就会更好地了解它应该是什么,并且你可以改变它。原则是这样的,先想好自己想做什么,再想怎么做。编写一个测试来测试您想要完成的事情,然后实现解决方案。你会第一次、第二次、第三次出错,但这个过程会让你更接近实际的解决方案,当你完成时,你应该有有值(value)的测试套件和一组松散耦合的类来完成工作完成。

编辑回应评论

不,不是随机名称。您需要预先执行一定数量的设计。我通常首先提出我认为我的解决方案需要的关键类型。然后我开始一个测试类 (Say FooTest),在其中我为我希望 Foo 执行的操作编写测试。我用写测试的过程来写接口(interface)。 Resharper 对此非常有用,因为我可以引用尚不存在的类型和方法并让 Resharper 创建它们:

[TestFixture]
public class FooTest
{
[Test]
public void Bar()
{
var foo = (IFoo)null; //At this point I use Resharper to create IFoo interface

Assert.IsTrue(foo.Bar()); //At this point I use Resharper to create bool IFoo.Bar();
}
}

显然上面的代码将因空引用ex而失败,但我有一个测试并且我有一个带有方法的接口(interface)。我可以继续遵循这个过程来为我的解决方案建模,直到我准备好开发一个具体的实现。在这个过程之后,我专注于接口(interface)和类型之间的交互,而不是这些类型的实现。构建 Foo 后,我只需将上面的代码更改为 var foo = new Foo(); 并使所有测试变为绿色。这个过程还意味着我为每个类都有一个接口(interface),这在编写单元测试时是必不可少的,因为我可以使用动态模拟库轻松地模拟依赖项,例如 MOQ .

关于c# - 关于 TDD 的知识漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8957790/

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