在什么时候您会停止并决定放弃单元测试所带来的好处呢?
当你能通过做其他事情提供更好的价值时。
我倾向于仅测试模型和数据持久化。 测试模型是强制性的。 UI(桌面应用程序,Web应用程序,命令行界面等)很难测试,因此我只在极少数情况下为其编写测试。
如果你需要削减测试,可以削减集成或端到端测试。Google的Misko Hevery在这里非常好地解释了这一点。
“单元测试为你带来更多回报”
是他文章中最好的引用。
除此之外,当你有足够的代码覆盖率并处理了一些代码的边缘情况时,就可以停止单元测试了。
如果您可以访问一些实时数据,您可以使用它进行单元测试。此外,您还可以使用数据生成器和随机数据。单元测试只能为您提供一定程度的信心,即它不会在未来出现问题。如果您对自己的测试有信心,您可以停止进行单元测试。
我认为当你获得了足够的信心水平时就可以开始测试。此外,对于我在工作中的项目,由于时间要求非常紧迫,我只能测试代码的某些部分(而不是全部),以便让我获得足够的信心水平。
就数据访问测试而言,您是否尝试过模拟响应的模拟测试。
我遵循的基本原则是,如果编写单元测试的工作量大于人工反复测试功能的工作量,那么就不必编写单元测试。
如果您查看 Visual Studio Team 版本中的测试项目,会发现有一个名为“手动测试”的项目,它实际上是一份指导文件,告诉人类如何进行测试并手动通过。某些事情,比如您提到的 UI 测试,或者代码需要解决底层框架、操作系统或驱动程序中奇怪或错误行为的问题,最好由人眼来验证。
如果您正在使用TDD,那么当测试列表中的所有测试都成功时,您就停止单元测试。
否则,当通过单元测试找到更多错误的成本超过通过QA流程找到它们的成本,并且通过所有测试的组合已达到可接受的代码覆盖水平时,您就停止单元测试。