Google关闭中的客户服务器应用程序的任何JavaScript代码覆盖工具



我正在尝试在Google Closure Cloture Client-Server项目中获得单位测试的代码覆盖率。我们有服务器端的代码覆盖范围,需要客户侧覆盖。

JScover运行自己的服务器。我们的Cleint侧单元测试要求在服务器下运行以访问特定服务。我看不到使他们一起工作的方法,但是关于如何做的建议是理想的。

伊斯坦布尔支持许多基础框架,但Google Closure似乎并不是其中之一。是否有一种简单的方法可以通过Google闭合单元测试使用伊斯坦布尔?

毛毯似乎不再受到支持。是否有人有最近的经验表明它仍然可以与Google关闭一起使用?

是否还有其他覆盖范围工具可以很好地与客户端服务器配置中的Google关闭?

伊斯坦布尔与Google Closure和goog.testing.testSuite配合良好,尽管如何设置它并不明显。通常,按照将伊斯坦布尔与iot.js一起使用的说明。

更具体地说,这是我们如何使用伊斯坦布尔进行自己的Google闭合测试来生成代码覆盖范围信息的概述:

  1. 安装node.js。

  2. 使用node.js软件包管理器,使用命令npm install --save-dev nyc

  3. 安装istanbul命令行工具
  4. 在我们的情况下,我们使用自定义服务器代码,因此在Node.js下运行测试套件不是一个选择。我添加了一个接受文件名和文件内容的服务器端调用,并使用此调用来收集代码覆盖范围统计信息。如果您不需要从JavaScript测试中使用自己的服务器代码,则将Node.js用作服务器更容易。请参阅与Iot.js一起使用伊斯坦布尔的链接(上)。

  5. 在需要的代码覆盖范围的每个文件中,运行伊斯坦布尔的命令行工具来启动文件以进行覆盖。该命令看起来像nyc instrument myfile.js coverage_output_directory。这会更改您的.js文件,因此请确保在某个地方可以使用该副本来还原文件。我使用python脚本来找到各种文件。

  6. 在每个Google关闭测试文件中,将其添加到文件末尾:

    window.onbeforeunload = function( event ) {
      /** @const {!FileUploadService} */
      var fileUploadService = new FileUploadService( "../.." );
      fileUploadService.upload( "coverage_output_directory.myfile.data", JSON.stringify( __coverage__ ) );
    };
    

为每个测试文件使用唯一的输出文件名。FileUploadService是我们用于在服务器上保存结果文件的对象。您将需要用自己的服务替换它,或在Node.js中使用该服务。

  1. 运行测试。

  2. 还原备份中所有更改的文件。

  3. 使用伊斯坦布尔和报告生成器来创建代码覆盖报告。例如,nyc report --reporter=lcov --temp-directory=coverage_output_directory。这使用LCOV报告生成器,该生成器与伊斯坦布尔安装并创建一个不错的报告。

  4. 通过加载coverage_output_directory/lcov-report/index.html

  5. ,使用浏览器检查代码覆盖范围

JScover运行自己的服务器

说" JScover可以运行自己的服务器"将更加准确。您还可以启动JavaScript文件并将其部署到服务器,运行测试并收集覆盖范围。这里有一个工作示例。

相关内容

最新更新