文章探讨了开发者在学习和实践中对单元测试与手动API测试之间区别的困惑。作者认为单元测试比手动API测试更麻烦,需要手动创建测试数据和编写测试用例,并且在生成代码时,单元测试的代码量甚至可能超过功能本身。作者由此质疑在实际开发中,是否只有复杂且需要长期维护的核心功能(如支付)才会进行单元测试,而简单的功能(如菜单树)可能仅做简单自测。
🤔 **单元测试与手动API测试的表面相似性与核心差异**:文章作者指出,从表面上看,单元测试似乎与手动API测试无异,都需要走一遍核心逻辑和业务流程,并且都需要手动编写测试用例和准备测试数据。然而,作者对两者在实际操作中的“麻烦程度”和“必要性”感到困惑,尤其是在面对复杂功能如菜单树时,单元测试生成的代码量巨大,引发了对投入产出比的思考。
⚙️ **单元测试的复杂性与效率考量**:作者以菜单树功能为例,说明了单元测试在实际开发中可能带来的额外工作量。通过AI辅助生成的四百行单元测试代码,让作者质疑人力编写所需的时间成本,甚至可能超过功能开发本身的时间。这引出了一个关键问题:在实际开发流程中,单元测试的投入是否总能带来相应的效率提升和质量保障,尤其是在面对非核心或快速迭代的功能时。
⚖️ **单元测试的应用场景权衡**:基于前述的困惑,作者提出了一个关于单元测试应用场景的设想:是否在实际开发中,单元测试主要应用于支付等复杂且需要长期维护的核心功能,而对于菜单树这类相对简单的功能,则可能只进行简单的自测。这种观点反映了在资源有限的情况下,如何根据功能的复杂性、重要性和维护周期来合理分配单元测试资源的实践性考量。
💡 **对单元测试价值的进一步探究**:作者的疑问核心在于,单元测试的“全面性”和“重要性”是否总是与手动测试的“麻烦程度”相平衡。他希望深入理解单元测试在保证代码质量、降低维护成本、促进团队协作等方面的具体价值,以便在实践中做出更明智的技术决策,而不是盲目追求测试覆盖率。
🚀 **AI辅助与单元测试的结合**:文章中提到利用AI(cursor)来生成单元测试代码,这为理解单元测试的实践提供了一个新的视角。虽然AI生成了大量代码,但也侧面反映了单元测试的结构化和规范化特点。这可能提示了未来单元测试实践的一个方向:如何更有效地利用工具来降低编写单元测试的门槛和成本,使其更易于被开发者接受和应用。
在学习的时候就经常听人说单元测试很重要,但是我每次看单元测试我都没搞懂这跟我手动 API 测试有啥区别?我感觉单元测试还更麻烦了,因为单元测试还需要自己创建测试数据自己测试核心逻辑和业务逻辑,我手动 API 测试不也能走一遍吗?然后说是单元测试更全面,但是我看单元测试的用例也是要我手写啊,这两个真有区别吗?
而且单元测试比手动调 api 测试麻烦好多,比如说我现在在做的菜单树功能,我不太理解单元测试我就让 cursor 帮我生成,他框框一顿写就已经有四百行代码了,这要是人力来写这不是写单元测试的时间都要比写功能本身还要花更久的时间了吗?
是不是实际开发的时候其实大多数简单功能,比如说我的菜单树是不会进行单元测试的,只会做简单的自测,而对于确实很复杂有必要长期维护的核心功能比如支付这种才对做单元测试?