我一直在研究如何在我们的Maven CI环境中进行最佳的JS单元测试。目前我在我的Maven项目中拼凑出了以下内容:
- qunit资源(JS/CSS文件)
- qunit测试HTML文件(每个被测试文件一个),如果需要则包含HTML固定装置
- 索引HTML文件,它将测试HTML文件作为超链接有序列表的引用
- PhantomJS运行文件,其中:
- 打开索引HTML文件并解析测试文件列表
- 打开每个测试文件
- 对于每个文件,截取qunit测试结果的屏幕截图
- 如果有任何失败,则以"1"状态退出
- 如果没有失败,则以"0"状态退出
- shell文件,如果未安装phantomjs,则会以“0”退出,如果已安装,则会调用phantomjs测试
pom.xml更改,以在构建的测试阶段运行phantomjs测试:
<plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.1</version> <executions> <execution> <id>PhantomJS Unit Testing</id> <phase>test</phase> <goals> <goal>exec</goal> </goals> </execution> </executions> <configuration> <executable>${project.basedir}/src/main/webapp/unittest/phantomcheck</executable> <arguments> <argument>${project.basedir}/src/main/webapp/unittest/qunit-runner.js</argument> <argument>${project.basedir}/src/main/webapp/unittest/tests/index.html</argument> <argument>${project.build.directory}/surefire-reports</argument> </arguments> </configuration> </plugin> </plugins>
所以,这很好地实现了目的。它在我们的开发和构建机器上运行qunit测试(只要安装了PhantomJS)。测试在无头浏览器环境中运行,对qunit测试没有限制。我见过的其他maven/qunit集成由于在Rhino或其他JS环境中运行测试而不支持编写类型的测试而失败。此外,PhantomJS使我们能够获得测试运行的截图,这在排除任何故障时非常有帮助。
我的方法的缺点是需要在构建/开发机器上安装PhantomJS。我不知道如何将phantomJS捆绑到依赖项中,以使开发人员不必担心安装PhantomJS。有人能给我一个方向吗?我该如何开始?