加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

TDD,如何编写即使对象不存在也将编译的测试

发布时间:2020-12-13 20:46:14 所属栏目:百科 来源:网络整理
导读:我正在使用VS 2012,但这并不重要. 重要的是我通过先编写所有测试然后创建代码来尝试做一些TDD. 但是,应用程序将无法编译,因为我的对象或方法都不存在. 现在,在我看来,我应该能够创建我的所有测试,但仍然运行我的应用程序,所以我可以调试等.测试不应该阻止编
我正在使用VS 2012,但这并不重要.

重要的是我通过先编写所有测试然后创建代码来尝试做一些TDD.

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

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

我认为它的重点在于,当您开发测试时,您可以开始看到重复等,以便您可以在编写单行代码之前进行重构.

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

编辑
我正在使用VS2012和C#

测试驱动开发是一个非常小的迭代.您没有预先定义所有测试.您可以根据一个要求的一个部分创建一个测试.然后实现代码以传递该测试.一旦它通过,你就可以处理另一部分需求.

我们的想法是尝试预先完成所有设计(无论是创建详细的类图还是创建一系列测试)意味着您会发现更难以改变设计中的弱点,因此您无法改善码.

这是一个例子.假设您决定使用继承来关联两个对象,但是当您开始实现这些对象时,您发现它们使测试变得困难.您发现单独测试每个对象会更容易,并通过包含来关联它们.正在发生的事情是测试正在以更松散的方向推动您的设计.这是TDD的一个非常好的结果 – 您正在使用测试来改进设计.

如果您提前编写了所有测试,假设您的继承设计决定是一个不错的选择,那么您可能会丢掉大量工作,或者您会说“现在做出类似的改变太难了,所以我会只是采用这种次优设计.“

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读