刚接触编程那会儿,总以为把功能跑通就完事了。直到有次改了一行代码,结果整个系统崩了,才明白写代码不只是让程序跑起来,还得保证它一直稳。
什么是单元测试
简单说,单元测试就是针对代码里最小的功能块(比如一个函数)写测试代码,确认它在各种情况下都能正确运行。就像你出门前检查钥匙、手机、钱包带没带齐,单元测试就是给代码做“出行清单”检查。
举个例子,你写了个加法函数:
def add(a, b):
return a + b
单元测试要做的,就是验证 add(1, 2) 真的等于 3,add(-1, 1) 等于 0,甚至传字符串会不会出错。
从最简单的开始
别一上来就想测整个项目。先挑一个小函数,试着写第一个测试。Python 用户可以用内置的 unittest,JavaScript 可以试试 Jest,Java 用 JUnit 都行。
还是用上面的 add 函数,Python 写法长这样:
import unittest
def add(a, b):
return a + b
class TestAdd(unittest.TestCase):
def test_add_positive(self):
self.assertEqual(add(1, 2), 3)
def test_add_negative(self):
self.assertEqual(add(-1, 1), 0)
if __name__ == '__main__':
unittest.main()
保存成 test_calc.py,命令行运行 python test_calc.py,看到 .OK 就说明通过了。
测试不是越多越好
新手容易陷入“必须全覆盖”的焦虑。其实刚开始,优先测那些核心逻辑、容易出错的地方就行。比如计算价格、判断登录状态这种,一旦出错影响大,就值得写测试。
就像坐飞机,你不可能把每个螺丝都检查一遍,但安全带、舱门这些关键点得确认好。
边写代码边测
很多人是先写完所有功能再补测试,结果拖着拖着就没了下文。更好的方式是:写一小段代码,马上写测试验证。这种节奏像走路——左脚右脚交替前进,不容易累,也不容易走偏。
你会发现,写了测试后,改代码时心里更踏实。就像系了安全带,哪怕路上颠簸也不慌。
遇到问题很正常
第一次写测试,可能卡在断言怎么写,或者依赖数据不知道咋模拟。别急,这些都是常见坑。网上搜对应语言 + “单元测试 mock 示例”,基本都能找到答案。比如数据库查不到真实数据,可以用 mock 模拟返回值,不让测试依赖外部环境。
慢慢来,每解决一个问题,你就多掌握一个工具。就像旅行中学会换外币、看地铁图,一开始手忙脚乱,后来就成了本能。
单元测试不是高手专属,它是写代码的一部分,和写函数一样普通。从第一行测试开始,你就在建立更靠谱的开发习惯。