开发工具 Emacs 与 Ruby 之 :测试

zhouchongzxc · 2014年04月28日 · 最后由 yfractal 回复于 2014年04月28日 · 2388 次阅读

我有个想法 关于测试的

是否可以将测试与代码合并在一起呢? (因为在写 elisp 的时候经常这么做的)

比如可以这样:


class SongList ## 你应该能够猜出 AE?是什么意思吧
  ##T list = SongList.new  ## 你或许也知道了 ##T 是做什么的
  def initialize()    @songs = Array.new  end

  ##T list.append("zhou").append("chong")
  ##T AE?("zhou",list[0])
  ##T AE?("chong",list[1])
  ##T AN?(list[2])
  def append(song)     @songs.push(song);    self    end

  ##T AE?("zhou",list.delete_first)
  def delete_first()    @songs.shift  end

  ##T AE?("chong",list.delete_last)
  ##T AN?(list.delete_first)
  ##T AN?(list.delete_last)
  def delete_last()     @songs.pop  end
end

看到了一个词:literate programming 可以按照任意的顺序写代码

应该说 ruby 实现了一小部分的 literate 对测试应该有用

我会写几行 elisp:提取 ##T 生成 test

(用 elisp 多一点 如没有标点 请原谅)

这样的话源代码会显得很乱吧。

嗯,这样做单元测试不错,测试如果能折叠就不显乱

回复 1 楼:我赞成 2 楼的意见

回复 2 楼:折叠代码对于现在的编辑器来说 相当 简单

回复 3 楼:我想要的是 unit_test

有谁知道两种 test 之间的差别吗?

我好想知道一点:一个是文档中的示例代码 另一个才能称得上测试 (一个是快速原型 一个是测试驱动)

见过 python 的 doctest,感觉不算是单元测试,没 stub 什么的。但又是测试一个 function 的。。。也可能是写测试的人出于某种考虑,没有用到 stub 什么的吧? 没研究过 python 的 doctest,不知道第三方依赖是否是个问题?比如 respec 是不是每个文件都要引入?再比如 factory,觉得需要有单独的文件。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号