我正在学习AngularJS,有一个名为" Unit Testing"几乎在angularjs文档的每一页都提到过。
问题是,我无法真正了解单元测试的内容。它看起来真的不必要,但可能不是。
有人可以解释为什么花时间编写单元测试是有用的吗? 我怎样才能从中受益?
答案 0 :(得分:1)
假设你有一个项目。在您的项目中,某些功能需要工作。传统上人们测试它们。但是,问题在于,无论何时更改代码中的某些内容,都可能会破坏某些内容。因此,您需要在代码中的每次更改后反复测试所有内容。现在,这可能很麻烦。如果每次更改后必须进行10次测试,那么在仅进行10次更改后,您需要执行100次测试。这需要时间。时间就是金钱。因此,每当您可以定义自动测试时,您可以定义单元测试,而不是每次都检查自己的测试用例,它会自动告诉您是否有错误。手动测试和单元测试之间的区别就像使用笔和纸计算所有内容而不是使用计算器之间的差异。有些测试无法自动化,但无论什么时候可以自动测试,都需要为它定义单元测试。
答案 1 :(得分:1)
作为网络开发人员,您必须接受以下事实:您不知道或无法控制人们如何使用您的应用程序。一旦它击中了野外,所有的赌注都将被取消。单元测试会告诉您编写的代码是否实际上正在执行您认为正在执行的操作。这是必要的,因为应用程序越复杂,跟踪所有内容就越困难。一旦项目超过6个月,或者超过一个开发人员,所有的赌注都会因为您按照预期的方式使用所写的内容而被取消。单元测试可帮助您确定何时不对,并在应用程序启动之前解决问题。您的测试通常会编写一次,然后反复使用。实际上,您应该拥有比代码更多的测试行。看看Angular,Ember,Backbone,jQuery。所有这些都使用单元测试(成千上万!),以确保他们在修复错误时不会无意中杀死某些功能。任何超出变量声明和单个函数的应用程序都应该进行单元测试。
编写单元测试所花费的时间从未浪费。终端2端测试也是如此。
答案 2 :(得分:1)
单元测试是确保您的程序符合其规格的一种方法。 您可以将每个单元描述为一个类及其方法。然后在测试中你写下你期望他们做的事情。然后编写最少量的代码以使测试通过。
所以在这里你可以看到它可以帮助你规划你的发展。
这也意味着如果你回到旧的代码,功能或其他东西。您更改此代码以使其适用于您刚刚编写的内容,但这样做会破坏其中一项测试。
此处它可以帮助您添加新功能,而不会破坏现有代码,方法是遵守您之前设定的规则。
在大型团队中,当您的代码与您可能从未见过的代码交互时,它会变得更有用。