0

我进行了一些测试,但我仍然不知道为什么要在我的应用程序中进行测试。假设我有这门课

class Human

  attr_accessor :age

  def initialize
    @age = 0
  end
end

和这个测试

describe Human do
  kid = Human.new
  kid.age.should == 0
end

测试通过了,大家开心。但我们真正完成了什么?这当然是一个非常简单的例子,但它表达了我的意思。像这样的测试可以为我提供什么信息?

4

1 回答 1

3

在您的示例中,代码是如此微不足道,以至于测试的麻烦远大于其价值。如果您将编写非常简单的应用程序(如果它完成了工作就没有错),那就这样吧。

但在现实世界中的大多数情况下,您需要编写测试有几个原因:

  • 为了自己确认代码按预期工作。
  • 帮助隔离错误发生的位置。您可以查看测试以查看调用链中的哪些组件已经过彻底测试,然后找到没有经过测试的组件(针对手头的案例)。这可以帮助您重现错误并找出其原因。
  • 允许自动化。一旦编写完成,测试就可以永远由持续集成服务器运行。这样你就知道你在路上所做的一些改变并没有破坏过去工作的东西。
  • 文档。当人们加入你的项目时,或者当你需要记住你为什么做了几个月前所做的事情时,查看代码要比阅读大量无聊且可能不是最新的文档文本要好得多。测试显示了组件应该如何工作和交互。
  • 有时当我想编写一些代码时,我实际上不确定它应该是什么样子以及 API 应该是什么。首先编写测试可以帮助我清除该 API 并弄清楚我需要做什么。

当然,测试需要编写成本低廉,以便随着功能的发展它们可以被丢弃。它们还需要快速运行,并且有大量关于如何做到这一点的文献。很多团队都不擅长测试,因此变得如此繁琐以至于他们停止了测试。如果你擅长它,这并不难,测试是非常强大的。

希望有帮助。

于 2013-10-27T15:27:33.477 回答