无头测试
PhantomJS的一个主要用例是对web应用程序的无头测试。它适用于一般的命令行测试,在预提交钩子内,以及作为持续集成系统的一部分。
测试框架
PhantomJS 本身并不是一个测试框架,它只用于通过一个合适的测试运行器启动测试。
下表总结列出了各种测试框架以及相应的测试运行程序,如果框架不需要外部/第三方的运行程序,则标记为“built-in”
框架 | 测试用例 |
---|---|
Buster.JS | built-in |
Capybara | Poltergeist, Terminus |
Mocha | Chutzpah, mocha-phantomjs |
FuncUnit | built-in |
Hiro | built-in |
Karma (née Testacular) | built-in |
Jasmine | Chutzpah, grunt-contrib-jasmine, guard-jasmine, phantom-jasmine |
JsTestDriver | js-test-driver-phantomjs |
Laika | built-in |
Preamble | built-in |
phantom-assert | built-in |
QUnit | qunit-phantomjs-runner, Chutzpah, JS Test Runner, Qlive, QUnited |
Robot Framework | phantomrobot |
Rx Test Runner | built-in |
tapedeck | built-in |
Testem | built-in |
Venus.js | built-in |
WebDriver | GhostDriver |
wru | built-in |
YUITest | Grover, phantomjs-yuitest |
PhantomJS 自带的例子中包含了 run-qunit and run-jasmine。 然而,这些例子都是为了便于说明,缺乏真实生产环境使用所必需的重要报告功能!
PhantomJS定制测试
此外,还有一些建立在PhantomJS之上的相关项目,为测试目的提供便捷的高级功能
- Casper.js is useful to build scripted navigation and testing
- Lotte 添加类似jquery的方法、链接和更多的断言逻辑
- WebSpecter 是一个针对web应用程序的BBD方式的验收测试框架
持续集成系统
在诸如Jenkins或TeamCity这样的CI系统中使用Phantomjs,不需要特殊的设置。只需确保在从属/构建代理上正确安装了PhantomJS并且可执行。
由于PhantomJS在Linux上完全没有头,所以代理可以在没有任何GUI的安装环境上运行。这意味着,PhantomJS可以运行在一个没有X11的Linux系统。它使得在Amazon EC2或Heroku实例中产生光构建代理成为可能。