单元测试

原文地址

https://stackify.com/unit-testing-basics-best-practices/

单元测试概念

哪些不算单元测试

  1. 如果你写的的代码是往数据库里写东西,或者从磁盘读文件,那么你就不需要写单元测试。即,依赖于环境,没有设置好就会出错的东西是不需要写单元测试的。
  2. 单元测试不能被当做其他类型的测试。单元测试不会生成一堆随机的数据去调用你的应用来进行测试。
  3. 单元测试不测试系统的多个组件和其工作方式。比如从命令行得到一个输入,来测试输出结果,这是一个端到端的系统测试,不是单元测试。
  4. 不能出错。单元测试不能报错,与预期结果不符。

什么是单元测试

单元测试隔离并测试特定的代码单元。听起来有点绕。
你可以把单元认为是一个方法,一个方法做特定的事情,测试一个方法就是测试特定的事情。不要企图创建一个什么都测试的东西。

单元测试最佳实践

1. Arrange, Act, Assert

Arrage

准备好测试需要的前置条件,比如示例化类,准备好测试数据等等。

Act

调用需要测试的方法。

Assert

对结果进行断言。

2. 一个测试方法只能有一个断言

这样的话结构清晰,逻辑清楚,而且断言结果容易判断出问题所在位置。

3. 避免测试出现相互依赖

比如不能共享一个类的实例,不能有参数传递。总之就是各干各的,不要共用一个东西。

4. Keep It Short, Sweet, and Visible

保持简单,可以让你在查问题的时候一眼看到重点,而不是在一堆混乱的逻辑里挣扎。

5. Recognize Test Setup as a Smell

当你在arrange阶段发现一切都很难设置好,好复杂的时候,你就应该停下来重新思考你的代码设计,不然这样的测试也是不可靠的,迟早会出问题。

6. 把单元测试加入到Build的内容里

如果build的时候单元测试出错了,那就应该立即停下并检查代码,这样能保证团队协作的质量。

加载评论框需要科学上网