【发布时间】:2011-12-15 19:10:03
【问题描述】:
我一直在研究在我们的 maven CI 环境中进行 JS 单元测试的最佳方法。我目前在我的 maven 项目中拼凑的内容如下:
- qunit 资源(JS/CSS 文件)
- qunit 测试 html 文件(每个被测文件一个),如果需要,使用 html 夹具
- 索引 html 文件,将测试 html 文件作为超链接的有序列表引用
- PhantomJS 运行器文件,其中:
- 打开 index html 文件并解析出测试文件列表
- 打开每个测试文件
- 为每个文件截取 qunit 测试结果的屏幕截图
- 如果有任何失败,以“1”状态退出
- 如果没有失败,以“0”状态退出
- 如果 phantomjs 未安装,shell 文件将以“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。谁能给我推动这个方向?我该如何开始?
【问题讨论】:
-
查看我的 Maven 插件 (phantomjs-qunit-runner)。 code.google.com/p/phantomjs-qunit-runner 此处使用详情:kennychua.net/blog/…
-
@KennyChua :提问者想要一个工具来下载 PhantomJS 作为依赖项,而您的插件不这样做。 :-(
-
嗨。您提到您能够运行多个测试(您的声明是:“索引 html 文件,它将测试 html 文件作为超链接的有序列表引用”)。你是怎么做的?我尝试了几种方法,但都没有奏效。你能显示你的代码吗?也许我的测试跑步者和你的不一样;你用的是哪一个。提前致谢。