1

我正在尝试在 Maven 中使用 jstestrunner 和 qunit 设置一些 javascript 单元测试。我从事过许多 Java 单元测试,包括设置基础设施,但我对 Javascript 执行此操作是新手。jstestrunner 页面上的设置信息会跳过关键信息。我会在 jstestrunner 邮件列表上询问这个问题,但他们的 codehaus 页面上的邮件列表链接无效,我找不到联系开发负责人 Christopher Hunt 的方法,除非可能通过提交 JIRA,似乎不合适。

使用页面谈到设置 phantomjs,但没有说明 qunit 接口。我想这对于经常使用 qunit 的人来说可能是显而易见的。

我已经创建了根 JUnit 测试包装器,但我看不到如何设置到 qunit 的缺失链接。

4

2 回答 2

0

I just got a basic setup up and running using QUnit, PhantomJS and js-testrunner. This link helped some: jstest-runner-sample-project.

For configuration I used:

  1. js-testrunner 1.0.2
  2. QUnit 1.14.0
  3. PhantomJS v1.9.7
  4. plexus utils v1.5.7 (required by js-testrunner)
  5. jetty v8.1.15 (required by js-testrunner)
  6. jackson v1.9.13 (required by jetty)

The test required 4 files:

  1. JUnit Java test wrapper - FirstTest.java
  2. HTML test wrapper for QUnit - firstTest.html
  3. JavaScript file to test - tests.js
  4. log4j configuration (standard, basic configuration)

Here are the four files I used for this basic test:

FirstTest.java:

package delta;

import org.codehaus.jstestrunner.junit.JSTestSuiteRunner;
import org.junit.runner.RunWith;

@RunWith(JSTestSuiteRunner.class)
@JSTestSuiteRunner.Include(value="firstTest.html")
@JSTestSuiteRunner.ResourceBase({ "src-web/delta", "../lib" })
public class FirstTest {
}

firstTest.html:

<!DOCTYPE html>
<html>
<head>
  <meta charset="ISO-8859-1">
  <script type="text/javascript" src="script/jquery-1.8.3.min.js"></script>
  <script type="text/javascript" src="script/qunit-1.14.0.js"></script>
  <link type="text/css" rel="stylesheet" href="css/qunit-1.14.0.css"/>
  <script type="text/javascript" src="tests.js"></script>
<title>firstTest</title>
</head>
<body>
  <div id="qunit"></div>
  <div id="qunit-fixture"></div>
</body>
</html>

tests.js:

/**
 * Supports firstTest.html
 */
(function() {
  var val;

  module( "First Test", {
    setup: function() {
      val = 1
    }
  });

  test( "hello test", function() {
    ok( val == "1", "Passed!" );
  });
}());

I invoked JUnit from within Eclipse, which uses the project root directory therefore requiring the paths to the test files.

After configuring the simple test I can execute them with standard Eclipse Run As->JUnit Test:

enter image description here

于 2014-05-09T16:15:21.247 回答
0

我一直在使用 QUnit、phantomjs、ant 和qunit-runner的修改版本运行一些 QUnit 测试。代码本身在一个闭源项目中,但它的要点是我ant test在一个build.xml只有一个目标的文件上调用,即test目标。

test目标使用phantomjsqunit-runner 和一些命令行参数调用。其中涉及一些魔法,例如猜测 qunit-runner 想要一个package.json从中注入要测试的文件。测试本身使用 ant 构建文件中的参数传递。

我对每个要测试的文件都有单独的测试文件,每个测试文件至少有一个module定义。

qunit-runner 为 qunit 构造配置对象,注入要测试的文件,并包含 qunit 进程各个阶段的回调挂钩,这使我能够构建看起来像 jUnit 的 xml 以馈入 Jenkins 构建服务器页面。

我同意你最初的结论,即 JavaScript 世界的单元测试框架仍处于起步阶段。但另一方面,JavaScript 是一种非常有延展性的语言,几乎没有铁定的约定可以作为测试框架的基础。在其他语言中,如果没有某种模拟框架来配合单元测试框架,你也不会走得太远。

于 2013-09-25T21:22:24.883 回答