javascript - 在基于 Maven 的项目中自动化 JavaScript 测试

标签 javascript maven testing qunit

我有一个基于 Maven 的 Java 项目,其中还包含一些我希望能够测试的 javascript 函数。我正在使用 QUnit(但可以切换到另一个 js 测试框架)来编写测试,但我必须执行 index.html 才能在浏览器窗口中查看运行的测试。

是否有一个当前可用的 maven 插件可以为我运行这些测试,并理想地将结果与我已经拥有的常规服务器端 junit 测试一起呈现?

我已经尝试使用目前可用的解决方案,但大多数解决方案都陈旧且文档损坏。我能得到的最接近的是使用 https://github.com/mxro/java-qunit但它在单个 junit 测试中运行所有 js 测试,并在第一次失败时停止。

最佳答案

从 Maven 运行 JS 测试

Frontend Maven Plugin可以调用 npm 命令。 Here是一个使用它的项目示例——这是一个展示不同类型测试的演示项目,因此它的配置比通常情况下要复杂一些。这是安装包的方式:

    <plugin>
      <groupId>com.github.eirslett</groupId>
      <artifactId>frontend-maven-plugin</artifactId>
      <version>0.0.24</version>
      <executions>
        <execution>
          <id>Install NodeJS and NPM</id>
          <goals>
            <goal>install-node-and-npm</goal>
            <goal>npm</goal>
          </goals>
          <configuration>
            <nodeVersion>v0.12.7</nodeVersion>
            <npmVersion>2.11.3</npmVersion>
          </configuration>
        </execution>
      </executions>
    </plugin>

运行 Karma 测试:

        <execution>
          <id>UI Unit Tests</id>
          <goals>
            <goal>karma</goal>
          </goals>
          <configuration>
            <karmaConfPath>${project.basedir}/src/test/unit-js/karma.conf.js</karmaConfPath>
            <skip>${unit.ui.tests.skip}</skip>
          </configuration>
        </execution>

运行 Protractor 测试(通过 npm 脚本):

        <execution>
          <id>UI Component Tests</id>
          <goals>
            <goal>npm</goal>
          </goals>
          <phase>test</phase>
          <configuration>
            <arguments>run component</arguments>
            <skip>${component.ui.tests.skip}</skip>
          </configuration>
        </execution>

综合报告

报告本身不是这个插件的一部分。负责报告生成的是您的 JS 框架(如 Karma、Jasmine)。您可以使用 xUnit 格式并让 CI(如 Jenkins)从中生成单个报告。或者使用 Allure具有适用于多种语言和框架的适配器的工具(如果您的框架没有适配器,则编写自己的工具相对容易)。

关于javascript - 在基于 Maven 的项目中自动化 JavaScript 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34785717/

相关文章:

javascript - 当用户离开页面时调用 JavaScript 函数

java - 将生成的源作为源文件夹添加到 Eclipse

javascript - 使用 Jasmine,如何使用 callFake() 和 done() 测试异步调用?

javascript - 如何在不污染全局命名空间的情况下公开 javascript 对象进行单元测试

java - 相当于 conserve String 的环境变量

javascript - DIV 在扩展时自行重新排序 - 我如何保持相同的顺序?

javascript - 如何缩放 Canvas ?

javascript - 单击另一个缩略图更改图像

java - 在基于促销的ci环境中,如何处理项目的jira版本和maven版本控制

java - 在 Maven 中创建具有外部依赖项的 jar 和其他 jar