Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用qunit和jstestrunner的真实示例?_Javascript_Maven_Phantomjs_Qunit_Jstestrunner - Fatal编程技术网

Javascript 使用qunit和jstestrunner的真实示例?

Javascript 使用qunit和jstestrunner的真实示例?,javascript,maven,phantomjs,qunit,jstestrunner,Javascript,Maven,Phantomjs,Qunit,Jstestrunner,我试图在Maven中使用jstestrunner和qunit设置一些javascript单元测试。我做过很多Java单元测试,包括设置基础设施,但我对Javascript做这方面的工作还不熟悉。jstestrunner页面上的设置信息跳过关键信息。我会在jstestrunner邮件列表上询问这一点,但是他们的codehaus页面上的邮件列表链接处于非活动状态,我无法找到联系开发负责人Christopher Hunt的方法,除非提交JIRA,这似乎不合适 用法页面讨论了如何设置phantomjs,

我试图在Maven中使用jstestrunner和qunit设置一些javascript单元测试。我做过很多Java单元测试,包括设置基础设施,但我对Javascript做这方面的工作还不熟悉。jstestrunner页面上的设置信息跳过关键信息。我会在jstestrunner邮件列表上询问这一点,但是他们的codehaus页面上的邮件列表链接处于非活动状态,我无法找到联系开发负责人Christopher Hunt的方法,除非提交JIRA,这似乎不合适

用法页面讨论了如何设置phantomjs,但没有提到任何关于qunit接口的内容。我想这对经常使用qunit的人来说可能是显而易见的


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

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

test
目标使用qunit运行程序和一些命令行参数调用
phantomjs
。其中涉及到一些魔术,比如猜测qunit运行程序想要一个
包.json
,它从中注入要测试的文件。测试本身通过ant构建文件中的参数来传递

对于我想要测试的每个文件,我都有单独的测试文件,每个测试文件至少有一个
模块
定义

qunit运行程序为qunit构造配置对象,注入要测试的文件,并包含qunit过程各个阶段的回调挂钩,这使我能够构造jUnit外观的xml,以提供给Jenkins构建服务器页面


我同意您最初的结论,即JavaScript世界的单元测试框架仍处于初级阶段。但另一方面,JavaScript是一种非常有可塑性的语言,测试框架所依赖的铁铸惯例很少。在其他语言中,如果没有某种模拟框架来配合单元测试框架,您也不会走得很远。

我刚刚使用QUnit、PhantomJS和js testrunner建立并运行了一个基本设置。 此链接帮助了一些人:

对于我使用的配置:

  • JSTestRunner 1.0.2
  • QUnit 1.14.0
  • PhantomJSV1.9.7
  • plexus utils v1.5.7(js testrunner需要)
  • jetty v8.1.15(js testrunner要求)
  • jackson v1.9.13(jetty要求)
  • 测试需要4个文件:

  • JUnitJava测试包装器-FirstTest.Java
  • QUnit的HTML测试包装器-firstTest.HTML
  • 要测试的JavaScript文件-tests.js
  • log4j配置(标准、基本配置)
  • 以下是我用于此基本测试的四个文件:

    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>
    
    我从Eclipse中调用了JUnit,它使用项目根目录,因此需要测试文件的路径

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


    这个问题对您有帮助吗?这是更有用的背景,是的。这也有助于我得出Javascript单元测试仍处于形成阶段的结论。
    /**
     * Supports firstTest.html
     */
    (function() {
      var val;
    
      module( "First Test", {
        setup: function() {
          val = 1
        }
      });
    
      test( "hello test", function() {
        ok( val == "1", "Passed!" );
      });
    }());