Ruby on rails 测试的目的是什么
我对测试有点了解,但我仍然不知道为什么要在我的应用程序中进行测试。 假设我有这门课Ruby on rails 测试的目的是什么,ruby-on-rails,rspec,Ruby On Rails,Rspec,我对测试有点了解,但我仍然不知道为什么要在我的应用程序中进行测试。 假设我有这门课 class Human attr_accessor :age def initialize @age = 0 end end 这个测试呢 describe Human do kid = Human.new kid.age.should == 0 end 考试通过了,大家都很高兴。但我们真正做到了什么?这当然是一个非常简单的例子,但它表达了我的意思。像这样的测试可以为我提供什么信
class Human
attr_accessor :age
def initialize
@age = 0
end
end
这个测试呢
describe Human do
kid = Human.new
kid.age.should == 0
end
考试通过了,大家都很高兴。但我们真正做到了什么?这当然是一个非常简单的例子,但它表达了我的意思。像这样的测试可以为我提供什么信息?在您的示例中,代码非常琐碎,测试的麻烦远远超过它的价值。如果您将编写非常简单的应用程序(如果它完成了任务,则不会有任何问题),那么就这样吧 但在现实世界中,大多数情况下,出于以下几个原因,您需要编写测试:
- 要亲自确认代码是否按预期工作
- 帮助隔离错误发生的位置。您可以查看这些测试,以查看调用链中的哪些组件已经过彻底测试,然后找到没有测试的组件(针对当前案例)。这有助于再现错误并找出其原因
- 允许自动化。一旦编写完成,测试就可以由持续集成服务器永远运行。这样你就知道,你在路上所做的一些改变并没有破坏曾经有用的东西
- 文件。当人们加入您的项目时,或者当您需要记住几个月前为什么要这样做时,最好是查看代码,而不是阅读大量枯燥且可能不是最新的文档文本。测试显示了组件应该如何工作和交互
- 有时候,当我想写一些代码时,我实际上不确定它应该是什么样子,API应该是什么。首先编写一个测试可以帮助我整理出API,并弄清楚我需要做什么
希望这能有所帮助。在您的示例中,代码非常琐碎,因此测试的麻烦远远超过了它的价值。如果您将编写非常简单的应用程序(如果它完成了任务,则不会有任何问题),那么就这样吧 但在现实世界中,大多数情况下,出于以下几个原因,您需要编写测试:
- 要亲自确认代码是否按预期工作
- 帮助隔离错误发生的位置。您可以查看这些测试,以查看调用链中的哪些组件已经过彻底测试,然后找到没有测试的组件(针对当前案例)。这有助于再现错误并找出其原因
- 允许自动化。一旦编写完成,测试就可以由持续集成服务器永远运行。这样你就知道,你在路上所做的一些改变并没有破坏曾经有用的东西
- 文件。当人们加入您的项目时,或者当您需要记住几个月前为什么要这样做时,最好是查看代码,而不是阅读大量枯燥且可能不是最新的文档文本。测试显示了组件应该如何工作和交互
- 有时候,当我想写一些代码时,我实际上不确定它应该是什么样子,API应该是什么。首先编写一个测试可以帮助我整理出API,并弄清楚我需要做什么
希望这能有所帮助。在您的示例中,代码非常琐碎,因此测试的麻烦远远超过了它的价值。如果您将编写非常简单的应用程序(如果它完成了任务,则不会有任何问题),那么就这样吧 但在现实世界中,大多数情况下,出于以下几个原因,您需要编写测试:
- 要亲自确认代码是否按预期工作
- 帮助隔离错误发生的位置。您可以查看这些测试,以查看调用链中的哪些组件已经过彻底测试,然后找到没有测试的组件(针对当前案例)。这有助于再现错误并找出其原因
- 允许自动化。一旦编写完成,测试就可以由持续集成服务器永远运行。这样你就知道,你在路上所做的一些改变并没有破坏曾经有用的东西
- 文件。当人们加入您的项目时,或者当您需要记住几个月前为什么要这样做时,最好是查看代码,而不是阅读大量枯燥且可能不是最新的文档文本。测试显示了组件应该如何工作和交互
- 有时候,当我想写一些代码时,我实际上不确定它应该是什么样子,API应该是什么。首先编写一个测试可以帮助我整理出API,并弄清楚我需要做什么
希望这能有所帮助。在您的示例中,代码非常琐碎,因此测试的麻烦远远超过了它的价值。如果您将编写非常简单的应用程序(如果它完成了任务,则不会有任何问题),那么就这样吧 但在现实世界中,大多数情况下,出于以下几个原因,您需要编写测试:
- 要亲自确认代码是否按预期工作
- 帮助隔离错误发生的位置。你可以看看t