2013-06-05 35 views
1

我想在Maven中使用jstestrunner和qunit设置一些javascript单元测试。我从事过许多Java单元测试,包括设置基础设施,但是我对JavaScript做这件事很新。 jstestrunner页面上的设置信息会跳过关键信息。我会在jstestrunner邮件列表上询问这个问题,但是他们的codehaus页面上的邮件列表链接是不活动的,我找不到联系开发负责人Christopher Hunt的方法,除了提交JIRA,似乎不合适。使用qunit和jstestrunner的真实例子?

使用页面讨论设置phantomjs,但它没有提及qunit接口。我想这对使用qunit的人来说可能很明显。

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

+0

做这太问题可以帮助您? http://stackoverflow.com/questions/8525311/better-way-to-integrate-maven-qunit-phantomjs?rq=1 – Steen

+0

这是更有用的背景,是的。这也有助于我的结论,即Javascript单元测试仍然处于形成阶段。 –

回答

0

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

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

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

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

我同意你的初步结论,即JavaScript世界的单元测试框架还处于初级阶段。但另一方面,JavaScript是一种非常可塑的语言,并且在测试框架上没有多少铁代码公约。在其他语言中,如果没有某种模拟框架去使用单元测试框架,你也不会走得太远。

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. 丛utils的v1.5.7(由JS-TestRunner的需要)
  5. 码头v8.1.15(由JS-TestRunner的需要)
  6. 杰克逊v1.9.13(由码头必需)

测试所需的4个文件:

  1. 的JUnit Java测试封装 - FirstTest。java的
  2. HTML测试封装的QUnit - firstTest.html
  3. JavaScript文件来测试 - tests.js
  4. 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> 

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运行AS-> JUnit测试执行它们后:

enter image description here

相关问题