【发布时间】:2019-07-02 09:47:56
【问题描述】:
我读过很多关于测试驱动设计的文章。我的项目正在使用测试,但目前它们是在编写代码之后编写的,我不清楚如何在另一个方向上进行。
简单示例:我有一个班级Rectangle。它有private 字段width 和height 以及相应的getter 和setter。常见的Java。现在,我想添加一个函数getArea(),它返回两者的乘积,但我想先编写测试。
当然,我可以写一个单元测试。但它不是失败的情况,而是它甚至没有编译,因为还没有getArea()函数。这是否意味着编写测试总是涉及更改生产代码以引入没有功能的假人?还是我必须以使用自省的方式编写测试?我不喜欢后一种方法,因为它降低了代码的可读性,以后用工具重构不会发现它并破坏测试,而且我知道我们重构了很多。此外,添加“虚拟对象”可能包括很多更改,即如果我需要额外的字段,则必须更改数据库以使 Hibernate 继续工作,……这对我来说似乎是在“仅编写测试”时进行大量高效代码更改的方式。我想要的是这样一种情况,我实际上只能在src/test/ 内部编写代码,根本不接触src/main,但没有自省。
有没有办法做到这一点?
【问题讨论】: