简评:写单元测试可以说是程序员的基本技能之一,编写单元测试不会浪费你的时间,反而很大程度上能避免你因为突发 bug 而加班的情况。
  作者在文中提出了三个原则来帮助大家写出高质量的单元测试:
  1.运行快速
  单元测试有两个好处:
  · 确定什么正常工作;
  · 检测什么停止了工作。
  测试是用来运行的,每次运行,都能够反馈你代码的状况。测试运行的越快,你越早能注意到 bug,也不容易让人觉得运行测试是一件很麻烦的事情,不会只在每次发布之前或者每天结束的时候才运行。
  要想测试运行得快,也意味着必须:
  · 运行在 JVM 中而不是设备上;
  · 只测试独立的业务逻辑块;
  · 不要在你的主要测试中涉及到 UI、数据库或网络测试;
  · 测试中不要使用 wait/sleep 语句。
  2.小而专注
  在编写测试时,心里应时刻明确每个测试是用来检测什么错误的。
  比如出现一个 bug,哪种情况你更喜欢:
  · 一个 bug -> 多个测试失败
  · 一个 bug -> 一个测试失败
  相信大多数人都会选择第二种情况,因为这意味着你的测试重复度低,这样的测试通常你看一眼名字知道是哪里错了。比如:
  @Test
  public void logInShouldFailWithWrongPassword() throws Exception {
  // Test code
  }
  也是对于每一个错误,正好一个测试失败,并且测试名描述了错误产生的原因。
  也意味着你应当:
  · 测试是多而小,而不是少而大的;
  · 每个测试只测试一个功能点;
  · 用测试的名称准确描述错误产生的原因。
  3.可靠
  测试是你的安全带,要想 发挥测试的威力,那要 120% 的认真对待测试,保证测试自己是完全可靠的。
  浪费时间和令人泄气的事情,莫过于出现了一个 bug,所有的测试还都运行通过了。
  因此对于测试来讲,重要的事情莫过于保证测试自己的正确可靠了。