这篇文档中,会介绍如何在Ubuntu中设置端到端的测试环境。这个环境中,需要一些软件作为基础设置
- Xvfb
- Selenium
- Protractor
- Chrome+ChromeDriver
按装并设置完成之后,这个环境可以运行基于Web的应用程序的单元测试(基于Karma或者Jasmine),以及端到端测试(基于Protractor)。事实上,基于selenium客户端或者cucumber的测试也可以很容易的在该环境中运行起来。
Xvfb
是一个虚拟的X服务,简而言之,是一个运行在内存中的图形系统。任何图形界面的应用程序都可以运行其上。主要用途就是测试。
$ sudo apt-get install xvfb
创建Xvfb
服务脚本,并保存到/etc/init.d/Xvfb
中。然后修改该文件权限,并加入启动列表(这样当服务器重启之后,该服务会自动被启动)
sudo chown root:root /etc/init.d/Xvfb
sudo chmod a+x /etc/init.d/Xvfb
sudo update-rc.d Xvfb defaults
下载selenium
的jar
包,选择standalone即可。可以通过命令行的wget
来完成:
sudo /usr/sbin/useradd -m -s /bin/bash -d /home/selenium selenium
wget http://selenium.googlecode.com/files/selenium-server-standalone-2.39.0.jar
sudo mkdir /usr/local/share/selenium
sudo mv selenium-server-standalone-2.39.0.jar /usr/local/share/selenium
sudo chown -R selenium:selenium /usr/local/share/selenium
为selenium
服务创建一个日志目录
sudo mkdir /var/log/selenium
sudo chown selenium:selenium /var/log/selenium
创建selenium
服务,修改权限,注册服务到启动项。
sudo chown root:root /etc/init.d/selenium
sudo chmod a+x /etc/init.d/selenium
sudo update-rc.d selenium defaults
安装浏览器所需要的依赖。
sudo apt-get install x11-xkb-utils xfonts-100dpi xfonts-75dpi
sudo apt-get install xfonts-scalable xserver-xorg-core
sudo apt-get install dbus-x11
安装浏览器本身:
sudo apt-get install chromium-browser firefox
如果需要使用phantomjs
,还需要安装一个额外的包:
sudo apt-get install libfontconfig1-dev
protractor
是运行angularjs
端到端测试的工具,它会使用浏览器和selenium
$ sudo npm install -g protractor
下载ChromeDriver,这个包用于和selenium
和Chrome
浏览器通信。
Chrome在安装之后,默认路径在/usr/bin/chromium-browser
,而selenium
却会在另一个地方,以另一个名字来找Chrome,所以需要建立一个符号链接:
$ sudo ln -s /usr/bin/chromium-browser /usr/bin/google-chrome
启动所有图形界面,而服务器上有没有安装X服务器,都需要让图形程序运行在Xvfb
中,由于上边的脚本中会把Xvfb
启动在:10
上,所以需要将系统的环境变量DISPLAY
设置成:10
,这样Chrome或者Firefox就会运行在Xvfb
了:
export DISPLAY=:10
sudo service Xvfb start
sudo service selenium start
启动Xvfb
服务和selenium
服务。
$ grunt unit
或者
$ karma --single-run start karma.conf.js
来运行单元级别的测试,而
$ protractor protractor.conf.js
来运行E2E测试。