You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular应用结合Selenium远程测试时如何生成代码覆盖率报告?

配置Angular应用生成E2E测试覆盖率报告(适配Java+Selenium方案)

1. 添加依赖与配置Angular构建规则

首先安装所需的webpack构建工具和Istanbul插桩依赖:

npm install --save-dev @angular-builders/custom-webpack istanbul-instrumenter-loader source-map-support

修改angular.json,新增一个专门用于测试覆盖率的构建配置(可复制现有production/development配置后修改):

"architect": {
  "build": {
    "builder": "@angular-builders/custom-webpack:browser",
    "configurations": {
      // 保留原有配置...
      "test-coverage": {
        "sourceMap": {
          "scripts": true,
          "styles": true,
          "vendor": true
        },
        "customWebpackConfig": {
          "path": "./webpack.coverage.config.js"
        },
        "optimization": false,
        "namedChunks": true,
        "extractLicenses": false,
        "sourceMap": true
      }
    }
  }
}

2. 编写自定义Webpack配置文件

在项目根目录创建webpack.coverage.config.js,配置Istanbul插桩规则:

module.exports = {
  module: {
    rules: [
      {
        test: /\.ts$/,
        exclude: [/node_modules/, /\.spec\.ts$/],
        use: {
          loader: 'istanbul-instrumenter-loader',
          options: { esModules: true }
        },
        enforce: 'post'
      }
    ]
  }
};

该配置会在TypeScript编译后,自动对业务代码进行Istanbul插桩,排除依赖包和测试文件。

3. 构建测试环境用的Angular应用

执行以下命令构建带插桩的应用:

ng build --configuration test-coverage

构建产物会输出到dist/目录,包含插桩后的代码和完整的source maps。

4. 部署测试环境容器

编写专门的测试环境Dockerfile(示例用Nginx部署):

FROM nginx:alpine
COPY dist/your-angular-app /usr/share/nginx/html
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80

启动容器后,访问应用时浏览器全局对象window.__coverage__会自动生成,用于后续数据收集。

5. 在JUnit/Selenide测试中收集覆盖率数据

在测试套件的收尾方法中,执行脚本获取覆盖率数据并保存到本地文件:

import com.codeborne.selenide.WebDriverRunner;
import java.io.FileWriter;
import java.io.IOException;

@AfterClass
public static void collectCoverage() {
    String coverageJson = WebDriverRunner.getWebDriver()
        .executeScript("return JSON.stringify(window.__coverage__);").toString();
    try (FileWriter writer = new FileWriter("coverage/coverage-from-selenium.json")) {
        writer.write(coverageJson);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

确保本地提前创建coverage/目录用于存储数据文件。

6. 生成可视化覆盖率报告

安装nyc(Istanbul的命令行工具):

npm install --save-dev nyc

执行以下命令生成HTML格式的可视化报告:

nyc report --reporter=html --report-dir=coverage-report --temp-dir=coverage

执行完成后,打开coverage-report/index.html即可查看完整的覆盖率详情。


内容的提问来源于stack exchange,提问作者max

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 09:02:24