您的问题并不容易回答,因为正如您所说,“这实际上取决于您有多少时间。” 不过,这里有一些意见:
实施后测试: 否
作为程序员,您是一种昂贵且稀缺的资源,多个截止日期叠加在一起。如此有效,这意味着“从不测试”。在你实现了一段代码之后,你将继续执行下一段代码,并且意味着“当你有时间”(你永远没有时间)回来编写测试。
还有你提到的问题。如果您在编写代码后进行了所有测试,并且您的测试发现了一些根本错误,那么您必须返回并修复所有代码以及所有测试。
实施时测试: 是
一旦你掌握了它的节奏,这种方法实际上真的很有帮助。你写了一个类,然后写了一个单元测试,不断地修改你的测试和你的代码,直到你完成。我相信它实际上比编写没有测试的代码要快。
在处理大型项目时,它也特别有用。运行单元测试以查看一个小模块是否正在工作是即时的。构建和加载整个应用程序以查看一个小模块是否正在工作可能需要几分钟时间。它也可能会打断你的注意力(这至少需要 10 分钟)。
测试内容: 尽可能多
100% 的测试覆盖率可能永远都不现实。但是绝对要测试程序的关键部分,执行数学计算或大量业务逻辑的东西。尽可能测试所有剩余的东西。没有理由测试“toString()”函数,除非这恰好对业务逻辑或其他东西至关重要。
另外,让你的测试尽可能简单,只有输入和输出。我的大部分测试函数都是两三行。如果您的函数由于组合太多而难以测试,则表明您的函数可能需要稍微分解一下。确保测试边缘情况和“不可能”的场景。