Nashorn的jjs解释器允许执行许多复杂的任务,如创建Web服务器,数据库操作和swing / javafx接口。这种方法的大多数好处是快速实验和使用您能想到的任何Java库的能力。
我在纯javascript模式下使用Nashorn,即:
一切都很好。然而,我无法使标准的javascript单元测试套件与Nashorn的jjs一起使用。
我看过jasmine,qunit,mocha和许多其他没有有效结果的框架。我甚至试图让java junit与纯jjs脚本一起工作。
其中许多都有js测试运行器,我发现请求在Web客户端上运行,这超出了我的范围。
我希望能够在纯js模式下使用Nashorn jjs解释器运行真正的不可知 javascript测试套件,而不是在java模式下运行。
是否有这样的工具,如果有的话怎么能和Nashorn的jjs一起使用?
更新
跟进Sirko的回答,我设法用这两个代码片段模仿了预期的行为(警告:Nashorn的具体内容)
qunit-nashorn.js:
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运行这些结果会产生以下结果:
&GT; 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
答案 0 :(得分:1)
这是我的一些代码的摘录,我刚才用过QUnit从testruns返回自定义输出:
QUnit.init();
// (failed) tests
QUnit.log( function(details) {} );
// module start
QUnit.moduleStart( function( details ){} );
// module summary
QUnit.moduleDone( function( details ){} );
// test begin
QUnit.testStart( function( details ){} );
// test end
QUnit.testDone( function( details ){} );
// finished all testing
QUnit.done( function(){} );
使用这些函数/回调/事件监听器我从QUnit测试中设置自定义输出。实际测试是这样添加的:
// start module
QUnit.module( 'myModuleName' );
// some tests
QUnit.test( 'some test', function( assert ) { } );
// execute
QUnit.load();
这段代码相当陈旧,所以QUnit可能会提供一种更简单的方法,但这曾经适用于我。