Dis*_*ned 11
你想进入单元测试是件好事,但我想提醒你不要过度热心.
将单元测试添加到遗留代码是一项重大任务,并且为了添加测试用例而停止其他工作几乎总是完全不可行.此外,除非您已经拥有TDD经验,否则学习曲线本身可以证明是一个难以克服的障碍.
但是,如果你坚持不懈,一步一步,你的努力最终会得到回报.
您可能遇到的问题:
Now()哪个返回TDateTime.它使用全局状态:当前日期时间.如果系统中有基于时间/日期的规则,则这些规则可能会返回不同的结果,具体取决于运行测试的时间.除非你找到一种有效的方法来应对这一挑战,否则你将会遇到一些"不稳定"的测试用例.俗话说"不要咬你的东西,不要咀嚼."
准备开始慢.目前,以您熟悉的方式继续进行大部分工作.但强迫自己每天写1或2个测试用例.随着你越来越舒服,你可以增加这个数字.
尝试坚持"久经考验的原则"
TDD工作流程是:首先编写测试并确保测试失败.我知道很难坚持这个习惯,但这个原则是一个非常重要的目的.这是一个确认您的测试用例证明错误/缺失功能的程度.我经常看到测试用例代码会在有/无生产变化的情况下通过 - 使测试有点无用.
对于数据库测试,您需要建立一个适合您的框架.
首先,您需要一种将数据库置于"基态"的机制.所有测试都应该通过的测试 - 无论是什么顺序或运行多少次.通常,这将涉及测试之间的某种重置(但它需要非常快).其次,您需要一种简单的方法来将数据库的架构更新为生产代码所期望的.
最初,您只想测试新功能或错误修复.
避免测试一切的诱惑.随着时间的推移,您的测试用例覆盖率会增加 一旦您的框架和模式建立起来,那么您可能有机会开始添加测试以增加覆盖率.
重构现有代码.
随着您对测试的熟悉,您将了解使测试更加困难的编码习惯.您可能会在遗留代码中发现许多此类问题.这样的代码不会被测试.您甚至可以在测试之前重构代码.显然这并不理想,因为你宁愿总是通过测试来证明你的改变没有破坏任何东西.一本关于重构的好书将为您提供一些可以使用的技术,这些技术将改变代码的结构而不改变其行为.
测试现有代码.
在为现有例程编写测试时,请查看代码并确定可能影响不同行为的每个输入.例如,当有if语句时,某些东西会导致条件评估为True,而其他条件则为 False.至少,您需要对每个排列进行测试.
在你的位置,我将使用DUnit创建一个单元测试项目。对于每个实体,我都会编写测试方法来运行旧的和新的句子,然后编写方法来比较结果。
\n\n我将编写一个名为 TTestCase 的类,让\xc2\xb4s 说TMyTestCase,并向其中添加一些辅助方法,然后将我的新测试类创建为TMyTestCase 的子类。
\n\n祖先类的想法是提供通用功能,使编写测试(例如比较方法)变得更容易,以提高生产力和舒适度。
\n| 归档时间: |
|
| 查看次数: |
1210 次 |
| 最近记录: |