使用qunit和jstestrunner的真实例子?

时间:2013-06-05 15:37:55

标签: javascript maven phantomjs qunit jstestrunner

我正在尝试使用jstestrunner和qunit在Maven中设置一些javascript单元测试。我参与了许多Java单元测试,包括设置基础架构,但我是Javascript的新手。 jstestrunner页面上的设置信息会跳过关键信息。我会在jstestrunner邮件列表上询问这个问题,但是他们的codehaus页面上的邮件列表链接无效,我找不到联系开发主管Christopher Hunt的方法,除非提交JIRA,似乎不合适。

使用页面讨论了如何设置phantomjs,但它没有说明qunit接口。我想这对于那些经常使用qunit的人来说可能是显而易见的。

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

2 个答案:

答案 0 :(得分:0)

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

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

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

qunit-runner为qunit构造配置对象,注入要测试的文件,并包含qunit进程各个阶段的回调挂钩,这允许我构建jUnit,查找xml以提供给Jenkins构建服务器页面。 / p>

我同意你的初步结论,即JavaScript世界的单元测试框架仍处于起步阶段。但另一方面,JavaScript是一种非常具有可塑性的语言,并且很少有铁铸惯例来支持测试框架。在其他语言中,如果没有与单元测试框架一起使用的某种模拟框架,您也不会走得太远。

答案 1 :(得分:0)

我刚刚使用QUnit,PhantomJS和js-testrunner进行了基本设置和运行。 这个链接帮助了一些人:jstest-runner-sample-project

对于我使用的配置:

  1. js-testrunner 1.0.2
  2. QUnit 1.14.0
  3. PhantomJS v1.9.7
  4. plexus utils v1.5.7(js-testrunner要求)
  5. jetty v8.1.15(js-testrunner要求)
  6. jackson v1.9.13(码头要求)
  7. 测试需要4个文件:

    1. JUnit Java测试包装器 - FirstTest.java
    2. QUnit的HTML测试包装器 - firstTest.html
    3. 要测试的JavaScript文件 - tests.js
    4. log4j配置(标准,基本配置)
    5. 以下是我用于此基本测试的四个文件:

      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!" );
        });
      }());
      

      我在Eclipse中调用了JUnit,它使用项目根目录,因此需要测试文件的路径。

      配置简单测试后,我可以使用标准Eclipse Run As-&gt; JUnit Test执行它们:

      enter image description here