当前位置: 首页 > 知识库问答 >
问题:

正在寻找与Nashorn的jjs解释器一起使用的javascript单元测试套件

艾凌龙
2023-03-14

Nashorn的jjs解释器允许执行许多复杂的任务,比如创建web服务器、数据库操作和swing/javafx接口。这种方法的最大好处是可以快速进行实验,并且能够使用任何你能想到的java库。

我在纯javascript模式下使用Nashorn,即:

  • 我只使用Nashorn提供的jjs解释器。
  • 我不会从Java程序调用Nashorn解释器
  • 我没有使用avatarjs或nodejs等效覆盖

一切都很好。然而,我无法让标准的javascript单元测试套件与Nashorn的jjs一起工作。

我研究了jasmine、qunit、mocha和许多其他框架,但没有得到有效的结果。。我甚至试图让java junit与纯jjs脚本一起工作。

其中很多都有js测试运行程序,我发现请求在web客户端上运行,这超出了我的范围。

我希望能够在纯js模式下运行一个真正的不可知论javascript测试套件,而不是在java模式下使用Nashorn jjs解释器。

有这样的工具吗?如果有,它如何与纳肖恩的JJ一起使用?

更新:

根据Sirko的回答,我成功地用这两个代码片段模仿了预期的行为(警告: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运行这些会得到以下结果:

test2   FAIL    at <anonymous> (qunit_poc.js:5) actual: false <> expected: true
time:    355 ms
total:   2
passed:  1
failed:  1

共有1个答案

燕正卿
2023-03-14

这是我的一些代码的摘录,我不久前用它让QUnit从测试运行返回自定义输出:

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可能提供了一种更简单的方法来执行此操作,但这曾经适用于我。

 类似资料:
  • 问题内容: 我在该领域做了一些谷歌搜索,发现了很多有关让Jenkins理解boost.test的XML输出格式的讨论,但是没有规范的参考。 有人说我们只需要使用XLST来转换XML格式,另一些人则认为XML在此之前需要进行一些修改有人拥有XSL来将Boost.TestXML日志转换为可显示的格式吗?)。有些人建议xUnit插件可以原生理解boost.test XML格式,另一些人则认为它不能 因为

  • 我对SonarRunner有以下问题。 SonarQube 以及 Sonar 运行器无法拉取 junit 格式的 xml 报告 “单元测试”或“测试覆盖率”小组件不显示。它说没有数据。我正在按照此处描述的说明进行操作 我按照描述手动创建了XML格式的报告文件,但是仍然没有成功。 下面是 XML 文件 - TEST-Firefox_210_Mac_OS.com.company.BarTest.xml

  • 我一直在学习用C++中的Google测试进行单元测试。 如果单元测试的目的是确保代码的某些段或对象按照预期的方式工作,那么我认为没有必要在最终项目中编译和导出单元测试代码,对吗?反正用户也不会使用它。它似乎使项目的规模变得不必要的大。 我的主要问题是:所有的单元测试代码会随最终项目一起编译导出吗,还是在导出之前我必须手动删除所有的单元测试? 对于单元测试和导出项目,是否有一个最佳的(或通用的)实践

  • 假设我们有一个要测试的代码: 现在假设我们在一个类中放置了两个单元测试。第一个“测试所有内容”,而第二个“什么都不做”: 这是一个IRL示例:我已经看到几十个测试通过用一些无用的代码替换测试内容来“修复”,因为被测试代码的契约随着时间的推移而变化。 现在,PIT“entry”单元是一个包含测试方法的类(而不是单个测试方法本身),因此在上述情况下,PIT不仅会显示100%的行覆盖率,还会显示100%

  • 问题内容: 我如何获取 当前正在运行的测试用例名称 ,而在testsuite集合中却有16个测试用例。测试按顺序执行(按照将测试添加到testSuite集合的顺序)。当我将所有测试添加到testSuite集合中时,我可以预览该对象,但是如何在测试运行时获取当前正在执行的测试。也许某些变量保存了此信息? 例: 使用Selenium-RC框架执行测试。 问题答案: unittest.TestCase.

  • 问题内容: 我在使用带有Nest的ElasticSearch创建用于搜索的单元测试时遇到问题。 单元测试 工作代码 即使执行以下操作,结果也始终为空 任何帮助,将不胜感激。 问题答案: 传递给的签名不正确,因此设置期望将永远不会匹配。签名应为 一个完整的工作示例 如果您不需要 存根 客户端,则只需使用真实客户端并将设置为的实例即可 这样,您还可以根据需要捕获请求。您可以更进一步,并创建自己的实现,