Nashorn的jjs解释器可以执行许多复杂的任务,例如创建Web服务器、数据库操作以及Swing/JavaFX接口。这种方法的优点是快速实验和能够使用您能想到的任何Java库。
我正在纯JavaScript模式下使用Nashorn,即:
- 我只使用来自Nashorn的提供的jjs解释器。 - 我不从Java程序中调用Nashorn解释器。 - 我不使用avatarjs或nodejs等叠加层。
一切都很好。然而,我无法使标准JavaScript单元测试套件与Nashorn的jjs配合使用。
我查看了jasmine、qunit、mocha和许多其他框架,但没有有效的结果。我甚至尝试让Java JUnit在纯jjs脚本中工作。
其中许多都有我发现需要在Web客户端上运行的JS测试运行程序,这超出了我的范围。
我希望能够在纯JS模式下,而不是在Java模式下,使用Nashorn jjs解释器运行真正的不可知性JavaScript测试套件。
是否有这样的工具,如果有,如何在Nashorn的jjs中使用它?
更新:
根据Sirko的答案,我成功地使用以下两个代码片段模仿了预期的行为(警告:Nashorn的特定内容)
使用纯jjs运行这些代码的结果如下:
我正在纯JavaScript模式下使用Nashorn,即:
- 我只使用来自Nashorn的提供的jjs解释器。 - 我不从Java程序中调用Nashorn解释器。 - 我不使用avatarjs或nodejs等叠加层。
一切都很好。然而,我无法使标准JavaScript单元测试套件与Nashorn的jjs配合使用。
我查看了jasmine、qunit、mocha和许多其他框架,但没有有效的结果。我甚至尝试让Java JUnit在纯jjs脚本中工作。
其中许多都有我发现需要在Web客户端上运行的JS测试运行程序,这超出了我的范围。
我希望能够在纯JS模式下,而不是在Java模式下,使用Nashorn jjs解释器运行真正的不可知性JavaScript测试套件。
是否有这样的工具,如果有,如何在Nashorn的jjs中使用它?
更新:
根据Sirko的答案,我成功地使用以下两个代码片段模仿了预期的行为(警告:Nashorn的特定内容)
load("qunit-1.18.0.js");
with(QUnit) {
init();
log(function(d) {
if (!d.result) {
var message = d.name + "\tFAIL" + d.source;
message += " actual: " + d.actual + " <> expected: " + d.expected;
print(message);
}
});
done(function(d) {
print("time:\t",d.runtime,"ms");
print("total:\t",d.total);
print("passed:\t",d.passed);
print("failed:\t",d.failed);
});
}
qunit_poc.js:
load("qunit-nashorn.js");
with(QUnit) {
test("test1", function(a) { a.equal(true,true); });
test("test2", function(a) { a.equal(false,true); });
}
QUnit.load();
使用纯jjs运行这些代码的结果如下:
> jjs qunit_poc.js
test2 FAIL at <anonymous> (qunit_poc.js:5) actual: false <> expected: true
time: 355 ms
total: 2
passed: 1
failed: 1