我正在尝试使用jstestrunner和qunit在Maven中设置一些javascript单元测试。我参与了许多Java单元测试,包括设置基础架构,但我是Javascript的新手。 jstestrunner页面上的设置信息会跳过关键信息。我会在jstestrunner邮件列表上询问这个问题,但是他们的codehaus页面上的邮件列表链接无效,我找不到联系开发主管Christopher Hunt的方法,除非提交JIRA,似乎不合适。
使用页面讨论了如何设置phantomjs,但它没有说明qunit接口。我想这对于那些经常使用qunit的人来说可能是显而易见的。
我已经创建了根JUnit测试包装器,但是我没有看到如何设置缺少的qunit链接。
答案 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。
对于我使用的配置:
测试需要4个文件:
以下是我用于此基本测试的四个文件:
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执行它们: