使用qunit和jstestrunner的真实例子?
我想在Maven中使用jstestrunner和qunit设置一些javascript单元测试。我从事过许多Java单元测试,包括设置基础设施,但是我对JavaScript做这件事很新。 jstestrunner页面上的设置信息会跳过关键信息。我会在jstestrunner邮件列表上询问这个问题,但是他们的codehaus页面上的邮件列表链接是不活动的,我找不到联系开发负责人Christopher Hunt的方法,除了提交JIRA,似乎不合适。使用qunit和jstestrunner的真实例子?
使用页面讨论设置phantomjs,但它没有提及qunit接口。我想这对使用qunit的人来说可能很明显。
我已经创建了根JUnit测试包装,但我看不到如何设置qunit的缺失链接。
我一直在使用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是一种非常可塑的语言,并且在测试框架上没有多少铁代码公约。在其他语言中,如果没有某种模拟框架去使用单元测试框架,你也不会走得太远。
我刚刚使用QUnit,PhantomJS和js-testrunner进行了基本设置和运行。 此链接帮助了一些:jstest-runner-sample-project。
对于配置我使用:
- JS-的TestRunner 1.0.2
- QUnit 1.14.0
- PhantomJS v1.9.7
- 丛utils的v1.5.7(由JS-TestRunner的需要)
- 码头v8.1.15(由JS-TestRunner的需要)
- 杰克逊v1.9.13(由码头必需)
测试所需的4个文件:
- 的JUnit Java测试封装 - FirstTest。java的
- HTML测试封装的QUnit - 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>
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测试执行它们后:
做这太问题可以帮助您? http://*.com/questions/8525311/better-way-to-integrate-maven-qunit-phantomjs?rq=1 – Steen
这是更有用的背景,是的。这也有助于我的结论,即Javascript单元测试仍然处于形成阶段。 –