测试AngularJS的跑步者 - 如何从eclipse IDE和CI服务器运行测试而不会有太多的复杂功能?

Mal*_*lki 13 continuous-integration integration-testing automated-tests unit-testing angularjs

我试图找出一种在angularjs应用程序上运行测试的简单方法.我是测试世界的新手,因此有点难以理解所有选项以及它们之间的区别.

我的目标:能够在我的IDE中运行测试 - Eclipse.并在谷歌浏览器上测试代码.

我发现茉莉花是编写js单元测试的明显选择.问题是为茉莉花测试和e2e测试选择跑步者.

为了保持简单,我想出了以下设置:在jasmine中编写单元测试,在phantomjs和syn.js中编写e2e测试.然后配置eclipse以运行phantomjs作为外部工具,以便输出将在eclipse中转到控制台.

我还打算在Jenkins有一个CI工作,而且根据我的理解,Jenkins也可以运行幻像,所以理论上这个解决方案对CI也是一样的.

另外,还有像Karma和Protractor这样的测试运行工具.一方面,他们似乎被推荐,但另一方面,在某些情况下,他们似乎有点矫枉过正.它们需要运行许多不同的工具/服务/进程才能工作,如果它中断,它似乎很难保持所有设置.

根据我的理解:量角器在运行在nodejs上的webdriverjs上运行,它需要一个selenium服务器在后台运行,最重要的是selenium打开真正的浏览器窗口,与无头浏览器测试相比,这似乎有点无意义.

然后是Karma,我还没有完全理解它应该做什么.根据我的阅读,它监视我的项目中的文件,每当文件被更改时,它运行测试.我不确定它是如何运行测试的 - 它是否也使用硒?

最后,还有咕噜咕噜和自耕农,我根本不明白他们做了什么,以及他们如何与我列出的其他工具互动或融合在一起.

如果有人能够澄清这些不同工具的作用以及它们如何组合在一起,我将不胜感激.另外,它们如何与Jenkins一起作为CI服务器?

此外,如果你可以评论我的"更简单的设置" - 它有意义吗?我错过了什么吗?

MBi*_*ski 21

Karma用于测试你的JS,无论它是否使用Angular.与Karma进行单元测试的细节非常清楚:http://www.yearofmoo.com/2013/01/full-spectrum-testing-with-angularjs-and-karma.html.是的,Karma根据需要打开和关闭浏览器窗口,并在配置文件中指定.如果您不想打开任何浏览器窗口,可以使用PhantomJS.您可以在大多数能够运行外部脚本的IDE中运行Karma,也可以通过命令行运行它.

量角器用于整个项目的端到端(或E2E)测试.它将打开一个浏览器窗口并点击页面,就像它是用户一样,输入您告诉它的数据并查找指定的结果.量角器比编写一些Jasmine要复杂一点,但结果是值得的.与Karma一样,您可以在大多数能够运行外部脚本的IDE中或通过命令行运行Protractor.

Yeoman是一个流程管理系统,它通过Bower整合依赖管理,通过Grunt实现任务自动化,通过Yo整合项目管理.它将在Karma和Protractor中运行您的测试,缩小您的JS,CSS和HTML,将所有内容编译到适当的文件(内部JS,外部库和CSS)中,并为您提供可以部署的完整包.Yeoman的美妙之处在于它并不特定于任何一个IDE.它所做的一切都可以通过IDE中的脚本或命令行来完成.

现在,关于Yeoman说了所有这些,你仍然需要编写测试(它不会为你神奇地提出它们)并学会将它集成到你的开发程序中,但它绝对是你想要的方法. JS开发.Eclipse适用于JS开发,但是你可以从WebStorm获得更好的性能和易用性(IMHO).

至于这些如何适合像詹金斯这样的CI,我相信Karma和Protractor都会以Jenkins可以阅读和显示的格式输出测试结果.使用Jenkins中的脚本编写功能,您可以将其配置为每次源控件存储库(您使用某种源控件,不是吗?)更改时运行构建过程,并在Jenkins页面上显示这些结果.我的办公室设置非常相似,我们每天都使用它.我不是那个必须进行Jenkins配置的人,但是我经常通过WebStorm与Yeoman(以及因此Karma和Protractor)合作并取得了非常好的成绩.