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

RequireJS/AMD模块中的JavaScript代码覆盖率

诸葛茂勋
2023-03-14

一个简短而看似愚蠢的问题,因为它如此简单,你会认为它无处不在:有人在RequireJS前端项目(非NodeJS)中获得过任何类型的代码覆盖吗?

这似乎是一个愚蠢的问题,因为TDD方法在JS世界的流行以及AMD开发的接管。

我尝试了一百万种方法,都缺乏。我的项目是一个带有Jasmine单元测试的骨干项目:

1) JSTD与复盖插件。JSTD无法正确加载和检测AMD模块。如果我在一个js文件(由RequireJS优化器组合)上运行JSTD,那么代码覆盖率工作得很好,只是覆盖率随后会被收集并在整个文件上定义度量。太好了,这是没用的,因为它包括第三方库,而且我不能针对单个单元来帮助测试开发。啊。

2)js coverage——完全失败,不喜欢AMD模块。

3) 铬特异性

我尝试的每种方法似乎都需要大量的定制工作。所以也许我需要从头开始设计一个定制的解决方案?

下面的方法如何:扩展RequireJS优化器以插入代码并创建覆盖率。它将是内存检测,可以根据需要启用。config({instrument:true})标志。每次require加载一个模块时,它都会自动检测该模块并将其放置在其模块存储库中。覆盖率统计数据收集在全局require对象下的一个对象中,可以从任何地方访问,比如说,在Jasmine测试运行之后。

输入?

共有3个答案

司空胤
2023-03-14

你对AMD模块和JSCoverage有什么问题?我有一个运行AMD模块的设置(QUnit/PhantomJS/JSCoverage)。

也许你只是忘了在require.config中设置正确的库路径?

在我更改库路径以使用插入指令的代码而不是“普通”文件之后,一切都正常了。

左丘烨烁
2023-03-14

事实证明,节点覆盖实际上提供了一个AMD不可知的接口,通过从其自己的服务器提供要插入的代码,该接口与RequireJS和Jasmine配合得很好。

我仍然会花一些时间来处理我开始的需求JS覆盖实现,因为它不需要运行单独的服务器。

马国源
2023-03-14

Blanket.js使用修改后的RequireJS加载器与Qunit一起工作。我们正在为Jasmine提供支持,并乐意接受任何反馈或建议。

如果您的项目即将投入生产,请使用毯子。js不适合您,但如果它只是一个辅助项目,那么它是否满足您的需求可能值得一看。

编辑:毯子现在支持茉莉花。

 类似资料:
  • 我有一个多模块项目,我似乎无法在Sonarqube上获得准确的单元测试代码覆盖率报告。我使用buildr和JaCoCo生成测试覆盖率。文件继承类似于下面。 项目--module1----reports----Jacoco------Jacoco.cov(jacoco执行文件,以前用作.exec)--module2--reports----Jacoco(生成的HTML、CSV和XML报表文件)---

  • 我有一个多模块项目和一个家长pom。xml及其两个模块。项目jar和项目。战争所有测试用例都在项目中。罐子当我运行mvn声纳时。母舰pom上的声纳目标,jacoco。未生成exec,代码覆盖率为空。我在父pom中具有以下属性。 请帮忙。我使用的是Sonarqube 4.2。

  • 代码覆盖是查找未被测试执行的代码区域的过程。不过要记住的是这并不能说明你测试代码的有效性。 在requirements.txt文件中添加依赖包: coverage==4.4.2 然后,我们在manage.py中新增一个命令: import coverage COV = coverage.coverage( branch=True, include='project/*',

  • 我有一个maven多模块项目。 所有测试都在称为tests/的单个模块中,所有代码都在单独的模块中。 有没有办法让我得到代码覆盖率?

  • 这是一个重要的可量化指标,如果代码覆盖率很高,你就可以放心的修改代码,在发版本的时候也能睡个安稳觉。否则就是拆东墙补西墙,陷入无尽的 bug 诅咒中。 那么在 OpenResty 里面如何看到代码覆盖率呢?其实很简单,使用 LuaCov 可以很方便的实现。 我们先了解下 LuaCov,这是一个针对 Lua 脚本的代码覆盖率工具,通过 luarocks 来安装: luarocks install l

  • 我有这样的项目结构: 模块应用程序 模块-登录 模块注册 问题:我有上面喜欢Android项目的结构,能够生成jaco代码覆盖率报告,并且可以用于声纳仪表板。我面临的espresso测试问题,它只显示模块应用程序的代码覆盖率,而不显示其他模块的代码覆盖率。Espresso测试正在运行用例流,如注册,然后从其他两个模块登录和调用类,但其他两个模块的覆盖率始终为0%。 < li >我想了解espres