我应该使用Protractor还是Karma进行端到端测试?

122

对于我的端到端测试,我应该使用Protractor还是Karma?

Angular-seed在使用Protractor/Selenium WebDriver进行E2E测试,但angular-phonecat教程使用了Karma。

我阅读到应该使用Karma进行单元测试,使用Protractor进行E2E测试,这听起来不错,但我想在这里询问其他开发人员的意见。


1
更适合软件推荐。但是如果您在那里发布这个问题,您将需要详细说明您的要求。相关元数据 - user2033671
5
Karma 和 Protractor 都是 Angular 团队使用和推荐的工具,但考虑到文档的状况(即有大量的文档且很难知道哪些是最新的),很难知道应该使用哪一个工具以及用于什么目的。这是一个好问题,glpretre 的答案正是我所寻找的。 - Matt
6
我认为这个问题并不是太宽泛(Protractor vs Karma)。我们讨论的是框架,而不仅仅是一些软件,所以这个问题在合适的地方。 - CCC
请查看我的答案,了解Karma和Protractor的用例、优点和限制的更详细讨论:https://dev59.com/zGQn5IYBdhLWcg3wIkMF#29619467 - Dmitri Zaitsev
我的理解是,Protractor不允许在没有其余部分(例如模拟)的情况下测试应用程序的一部分:测试代码甚至不在与应用程序相同的JS解释器中运行。没有文件系统监视源代码修改和自动重新触发受影响的测试。Karma提供了这些功能。它将测试代码+应用程序代码发送到浏览器中的<script>中,以便它们在同一个解释器中运行,可以进行模拟,但不适用于具有本机事件的端到端测试,就像真正的用户正在操作一样。 - robert4
1个回答

179

AngularJS团队建议使用Protractor代替Angular Scenario Runner:

Angular Scenario Runner处于维护模式 - 如果您要启动一个新的Angular项目,请考虑使用Protractor

引用自AngularJs文档

angular-phonecat教程是很久以前(主要是2011年)开发的,并且尚未更新以使用一些Angular新功能,如Protractor。

编辑

Protractor文档-常见问题解答中:

为什么Karma和Protractor都需要?何时使用哪个?

Karma是一个很好的单元测试工具,而Protractor则用于端到端或集成测试。这意味着应该使用Karma来运行有关单个控制器、指令和服务逻辑的小型测试。对于整个应用程序的运行实例存在的大型测试,应该使用Protractor。Protractor旨在从用户的角度运行测试-如果您的测试可以被写成人与您的应用程序交互的指令,那么它应该是一个使用Protractor编写的端到端测试。

这里有一篇很棒的博客文章,包含更多信息。


11
从 Karma FAQ - http://karma-runner.github.io/0.10/intro/faq.html - 我可以使用 Karma 进行端到端测试吗? Karma 主要设计用于低级别(单元)测试。如果是 AngularJS 应用程序,您可以使用带有 karma-ng-scenario 插件的 Karma,但我们建议使用 Protractor 进行高级别测试。 - mrwaim
如果我想进行单元测试和端到端测试,那么我需要为单元测试配置Karma环境,并为UI测试或端到端测试配置Protractor吗? - Sunil Garg
2
@SunilGarg 是的,你必须这样做,也许我们的入门应用程序结构可以帮助你:https://github.com/glepretre/angular-requirejs-ready(如果你不使用它,请忽略requireJS的细节)。 - glepretre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接