gpt4 book ai didi

tdd - TDD,如何编写即使对象不存在也可以编译的测试

转载 作者:行者123 更新时间:2023-12-04 13:23:49 33 4
gpt4 key购买 nike

我正在使用VS 2012,但这并不是很重要。

重要的是,我正在尝试通过首先编写所有测试然后创建代码来进行一些TDD。

但是,该应用程序将无法编译,因为我的对象或方法都不存在。

现在,在我看来,我应该能够创建所有测试,但仍可以运行我的应用程序,以便可以进行调试等。由于缺少对象和方法,因此测试不应阻止编译。

我认为整个问题是,在开发测试时,您可以开始看到重复等内容,以便您可以在编写一行代码之前进行重构。

所以问题是,有没有办法做到这一点,或者我做错了吗?

编辑
我正在使用VS2012和C#

最佳答案

测试驱动开发大约是很小的迭代。您无需预先定义所有测试。您基于一项需求的一小部分创建一项测试。然后,您实现代码以通过该测试。一旦通过,您就可以处理需求的另一部分。

这个想法是,尝试进行所有设计(无论是创建详细的类图还是创建大量测试)都意味着您将发现更改设计中的弱点过于昂贵,因此不会改善您的设计代码。

这是一个例子。假设您决定使用继承关系来关联两个对象,但是当您开始实现这些对象时,您发现对它们进行测试变得困难。您会发现分别测试每个对象并通过包含将它们关联起来会容易得多。发生的情况是,测试正在朝着更加松散的耦合方向插入您的设计。这是TDD的一个很好的结果-您正在使用测试来改进设计。

如果您事先编写了所有测试,并假设继承的设计决定是一个不错的选择,那么您要么丢掉很多工作,要么说“现在做这样的更改太难了,所以我将而是采用这种次优的设计。”

当然,您可以预先创建与业务规则相关的验收测试。这些被称为行为测试(行为驱动开发或BDD的一部分),从用户的角度来看,它们很好地测试了软件的功能。但是,这些不是单元测试。单元测试用于从开发人员的角度测试代码。提前创建单元测试无法达到TDD的目的,因为它会使测试更加困难,阻止您改进代码,并经常导致实践的叛逆和失败。这就是为什么正确做到这一点很重要的原因。

关于tdd - TDD,如何编写即使对象不存在也可以编译的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13522950/

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