class - TDD我应该为测试用例创建一个空类吗?

我是TDD的新手,并且渴望开始使用它,但是只要我正在处理的测试用例需要一个尚不存在的类(作为输入或输出),我都会遇到麻烦。

问题是我不知道是否要创建没有任何功能的类(是否认为这是未经测试的代码?),或者是停止进行测试(绿色),然后开始为这个新的非代码编写测试?现有的班级。

第二种方法似乎是递归的,可能会使我迷失方向,而第一种方法则创建了一个新类,没有测试。

有没有我没有想到的第三种方法,哪个更好?

最佳答案

您可以双向使用。有时,仅创建一个新的辅助类并暂时将其保留为空壳是一个好方法。

但是,TDD的主要好处是可以反馈有关您的代码的信息,因此,如果您经常遇到这种情况,则应该停下来考虑一下这将告诉您API的设计。

尽管如此,这没有内在的错误,因为它还取决于您的整体方法。如果您正在执行Outside-In TDD,那么这往往会发生很多,因为您是从抽象级别开始并逐步降低的(而恋人级别的类尚不存在)。

另一方面,如果您进行自下而上的TDD,则不应经常发生这种情况,因为您从构建模块开始,然后从这些构建模块组成更高级别的类。

在任何情况下,“递归”方法都是使用Git的一种示例,因为每次您遇到需要在当前编写的测试之前编写另一项测试的情况,就可以使用

git stash


然后编写新的测试。完成新测试后,您可以进行

git stash pop


返回原始测试。您可以递归执行此操作,因此可以帮助您跟踪自己的想法。

本文翻译自 https://stackoverflow.com/questions/22293230/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 class unit-testing testing tdd methodology


相关文章:

c++ - 如何将void指针转换为类数组

c++ - 链接时C ++对基类函数的未定义引用(-不是vtable,构造函数,模板或纯虚函数)

.net - 没有单元测试(TDD),QA能否有效?

testing - UFT11.50-服务测试-如何从响应正文中获取数据

java - 先前的Spring Boot测试中的Quartz作业仍然随机运行

c++ - C ++:将模板声明为类成员

c# - 帮助重构我的C#代码以使其更易于维护并使用最佳编码实践

android - 在此版本中使用了不推荐使用的Gradle功能,使其与Gradle 5.0不兼容

asp.net - Web测试软件[关闭]

regex - QTP:如何在检查点属性编辑对话框中获得“复杂值”编辑控件?