Javascript Karma与量角器、单元测试与e2e测试

Javascript Karma与量角器、单元测试与e2e测试,javascript,angularjs,unit-testing,protractor,karma-jasmine,Javascript,Angularjs,Unit Testing,Protractor,Karma Jasmine,有人能解释一下为什么我需要量角器和业力吗。在我看来,很快他们就在做同样的事情。我知道Karma是用于单元测试的,而量角器是用于e2e测试的 两种测试之间的主要区别是什么 我们为什么不在这两个方面使用相同的运行程序/框架呢 使用这两种框架有什么具体原因吗 我知道两者都可以使用(并且在大多数示例中使用)Jasmine框架来描述测试 根据定义,单元测试单独测试单个代码单元。测试一个控制器,与它使用的服务隔离,或者测试一个服务,与它向其发送请求的后端REST服务器隔离,这是一个好主意,并且可以使测试

有人能解释一下为什么我需要量角器和业力吗。在我看来,很快他们就在做同样的事情。我知道Karma是用于单元测试的,而量角器是用于e2e测试的

  • 两种测试之间的主要区别是什么
  • 我们为什么不在这两个方面使用相同的运行程序/框架呢
  • 使用这两种框架有什么具体原因吗

我知道两者都可以使用(并且在大多数示例中使用)Jasmine框架来描述测试

根据定义,单元测试单独测试单个代码单元。测试一个控制器,与它使用的服务隔离,或者测试一个服务,与它向其发送请求的后端REST服务器隔离,这是一个好主意,并且可以使测试非常快速,但是拥有所有这些测试并不能保证,当所有东西都组装在一起并真正与后端通信时,应用程序能够按预期运行


E2e测试将应用程序作为一个整体进行测试。它们相当于一个坐在浏览器前的测试人员,使用应用程序查看它是否按预期工作。量角器是位于Selenium之上的一个层,它允许以编程方式使用浏览器,即编写指令来单击链接、填写表单、提交表单,就像人类所做的那样

谢谢@JBNizet!这回答了我问题的第一点。如果你想一想,它实际上回答了所有问题。我期待着理解它。我看到的所有量角器测试的例子都很像点击这里和那里。在我看来,这与因果报应没有什么不同,我可以在因果报应中做到这一切。如果差异只是在使用工具的方式上,那么在这种情况下,我们不需要两种工具。这只会增加复杂性。我正在寻找这些工具之间的真正区别,以及我们需要两者的原因。这是编译、会话维护或诸如此类的方式吗?不是。在Karma中,您创建单元测试,测试一个组件,并模拟其依赖性。多亏了karma,测试在浏览器中执行。没有请求发送到后端。测试一个组件的逻辑和视图。您还可以对管道、服务或任何其他内容进行单元测试。在量角器中,测试是由NodeJS执行的,而不是由浏览器执行,它通过像用户一样驱动浏览器来测试整个应用程序,而不仅仅是一个组件。这基本上是测试气泵或断路器是否正常工作(单元测试)和测试汽车是否正常工作的区别(包含一个气泵、几个断路器和许多其他东西)工作(e2e测试)。