IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

单元测试中的Fluent Interface

淘宝数据平台团队 2010-04-07 13:59:43 累计浏览 2,635 次
本机暂存

测试的重要性是每个程序员都明白的, 但真正自己去做测试(Unit Test)的却很少, 曾经我也是其中的一员.

因为写个main调用一些方法, 打印出结果或状态, 然后人工肉眼去排查, 若不是迫于无奈, 我相信没有程序员愿意纠结于这些琐碎的东西.

其实, 测试本可以很有趣的.借助JUnit, 我们可以将测试按不同的场景组织起来, 在”一键”之后的红绿条的反馈下, 快速解决代码中存在的问题. 如果你还不太了解JUnit, 请先去这里. 后文将以JUnit为基础, 以Fluent Interface(这个在国内还比较时髦的术语)为切入点, 展示一下更有趣的测试.

在解释什么是Fluent Interface之前, 请先看这样一段测试代码:

public class Calculator {
  public int sum(int one, int other);
}

public class CalculatorTest {
  private final Calculator calc = new Calcuator();
  @Test public void
  onePlusOne() {
    assertEquals(2, calc.sum(1, 1));
  }
}

上述代码是基于JUnit4编写的, 用assertEquals来测试Calculator的sum方法对一加一计算的结果. 这种写法很简单, 但从语义上并不是那么流畅, 若换种写法, 如:

public class CalculatorTest {
  [...]
  @Test public void
  assertThatOnePlusOneIsEqualToTwo() {
    assertThat(calc.sum(1, 1)).isEqualTo(2);
  }
}

这样阅读起来是否感到更为清晰呢? 若是将语句中的符号换成空格:

assert that calc sum 1 and 1 is equal to 2

这几乎就是人类的自然语言了(

同分类推荐文章

  1. 科技爱好者周刊(第 401 期):如何赚到10亿美元 (2026-06-26 08:05:38)
  2. 如何做决策 - 从 Go 的一个 issue 说起 (2026-06-26 08:00:00)
  3. Seven Player:Windows上播放115网盘视频的增强工具 (2026-06-09 00:06:47)

查看更多 开发者 文章 →

建议继续学习

  1. PHP连贯接口 (累计阅读 7,387)
  2. 软件测试工程师的职业素质 (累计阅读 4,999)
  3. 什么是重构,什么不是重构 (累计阅读 4,615)
  4. web项目和单元测试 (累计阅读 4,238)
  5. 用(Hudson+Subversion+Ant+JUnit)搭建了个持续集成(Continuous Integration)环境 (累计阅读 4,135)
  6. 自动化测试之惑 (累计阅读 3,635)
  7. API设计新思维:用流畅接口构造内部DSL (累计阅读 3,312)
  8. TDD并不是看上去的那么美 (累计阅读 2,963)
  9. 你真正需要的代码测试覆盖率是多少? (累计阅读 2,950)
  10. 我心中的好程序员 (累计阅读 2,810)