datai/datai-scenes/datai-scene-salesforce/docs/changelog/2026-02-02-002-03-changelog.md

8.3 KiB
Raw Permalink Blame History

变更日志 - 测试执行

元数据

  • 需求编号: 002-03
  • 需求名称: 测试执行
  • 创建时间: 2026-02-03
  • 创建人: AI Assistant
  • 版本号: v1.0.0
  • 关联需求: ApexAPI源org实现

变更概述

实现 Salesforce Apex 测试执行功能,支持运行所有测试、按类运行测试、按包运行测试、按方法运行测试,以及查询测试结果、代码覆盖率和 Flow 覆盖率。该功能与 002-02Apex代码编译和执行紧密集成复用其数据库表结构。

变更内容

新增功能

1. 测试执行功能

  • 运行所有测试 (runAllTests)

    • 支持运行 Salesforce 组织中的所有 Apex 测试
    • 支持跳过代码覆盖率收集
    • 支持设置最大失败测试数
  • 运行指定类的测试 (runTestsByClasses)

    • 支持按类名运行指定的 Apex 测试类
    • 支持多个类同时运行
  • 运行指定包的测试 (runTestsByPackages)

    • 支持按包名运行指定包中的所有测试
    • 支持多个包同时运行
  • 运行指定测试方法 (runTestsByMethods)

    • 支持精确指定类名和方法名运行测试
    • 支持运行单个测试方法或多个测试方法

2. 测试查询功能

  • 查询测试结果 (queryTestResults)

    • 支持分页查询测试结果列表
    • 支持按测试运行 ID 查询
    • 支持按通过状态查询
  • 查询测试详情 (queryTestDetails)

    • 查询指定测试运行的详细信息
    • 包含成功详情、失败详情、代码覆盖率、Flow 覆盖率
  • 查询代码覆盖率 (queryCodeCoverage)

    • 查询指定测试运行的代码覆盖率详情
    • 支持按类名过滤
  • 查询 Flow 覆盖率 (queryFlowCoverage)

    • 查询指定测试运行的 Flow 覆盖率详情
    • 支持按 Flow 名称过滤

新增数据库表

1. datai_apex_test_success测试成功详情表

  • 用途: 存储测试成功的详细信息
  • 字段: id, test_result_id, test_id, class_name, method_name, time, message, stack_trace, dept_id, create_by, create_time, update_by, update_time, del_flag
  • 外键: test_result_id → datai_apex_test_result.id

2. datai_apex_flow_coverageFlow 覆盖率表)

  • 用途: 存储 Flow 覆盖率信息
  • 字段: id, test_result_id, name, type, namespace, num_elements, num_elements_covered, coverage_percent, dept_id, create_by, create_time, update_by, update_time, del_flag
  • 外键: test_result_id → datai_apex_test_result.id

修改数据库表

datai_apex_test_result测试结果表

  • 新增字段:
    • all_passed: 是否全部通过TINYINT
    • total_coverage: 总体覆盖率百分比DOUBLE
  • 新增索引:
    • idx_all_passed
    • idx_total_coverage

新增代码文件

Controller

  • ApexTestController.java - REST API 控制器,提供 8 个接口
    • POST /api/apex/test/run-all
    • POST /api/apex/test/run-by-classes
    • POST /api/apex/test/run-by-packages
    • POST /api/apex/test/run-by-methods
    • GET /api/apex/test/results
    • GET /api/apex/test/details
    • GET /api/apex/test/coverage
    • GET /api/apex/test/flow-coverage

Service

  • IApexTestService.java - 服务接口,定义 8 个方法
  • ApexTestServiceImpl.java - 服务实现,包含完整的测试执行逻辑
    • 使用 ReentrantLock 保证多线程安全
    • 使用 @Transactional 保证数据一致性
    • 集成 Salesforce Apex API

DTO数据传输对象

  • RunAllTestsDto.java - 运行所有测试请求
  • RunTestsByClassesDto.java - 运行指定类测试请求
  • RunTestsByPackagesDto.java - 运行指定包测试请求
  • RunTestsByMethodsDto.java - 运行指定方法测试请求
  • TestsNodeDto.java - 测试节点 DTO
  • QueryTestResultsDto.java - 查询测试结果请求
  • QueryTestDetailsDto.java - 查询测试详情请求
  • QueryCodeCoverageDto.java - 查询代码覆盖率请求
  • QueryFlowCoverageDto.java - 查询 Flow 覆盖率请求

VO值对象

  • RunTestsResultVo.java - 运行测试结果
  • RunTestSuccessVo.java - 测试成功详情
  • RunTestFailureVo.java - 测试失败详情
  • CodeCoverageResultVo.java - 代码覆盖率结果
  • FlowCoverageResultVo.java - Flow 覆盖率结果
  • TestDetailVo.java - 测试详情
  • TestFailureVo.java - 测试失败信息

Entity实体类

  • DataiApexTestSuccess.java - 测试成功详情实体
  • DataiApexFlowCoverage.java - Flow 覆盖率实体

Mapper

  • DataiApexTestSuccessMapper.java - 测试成功详情 Mapper 接口
  • DataiApexFlowCoverageMapper.java - Flow 覆盖率 Mapper 接口
  • DataiApexTestSuccessMapper.xml - 测试成功详情 Mapper XML
  • DataiApexFlowCoverageMapper.xml - Flow 覆盖率 Mapper XML

新增文档

影响范围

模块级别

  • 模块: datai-salesforce-apex
  • 影响: 新增测试执行功能模块

功能级别

  • 功能: Apex 测试执行
  • 影响: 支持 8 个 REST API 接口

文件级别

  • 新增文件: 28 个
    • 1 个 Controller
    • 2 个 Service接口+实现)
    • 9 个 DTO
    • 7 个 VO
    • 2 个 Entity
    • 4 个 MapperJava + XML
    • 3 个文档(需求、设计、决策)

数据库级别

  • 新增表: 2 个datai_apex_test_success、datai_apex_flow_coverage
  • 修改表: 1 个datai_apex_test_result

技术要点

1. 复用策略

  • 复用连接管理: 使用 002-01 的 ApexConnectionFactory 获取 SoapConnection
  • 复用数据库表: 复用 002-02 的 datai_apex_test_resultdatai_apex_test_failuredatai_apex_code_coverage
  • 复用实体类: 直接使用 apex.jar 中的 RunTestsResultRunTestSuccessRunTestFailure 等类

2. 并发控制

  • 使用 ReentrantLock 保证测试执行的多线程安全
  • 与 002-02 保持一致

3. 数据一致性

  • 使用 @Transactional 保证测试结果的完整保存
  • 测试结果、成功详情、失败详情、代码覆盖率、Flow 覆盖率在一个事务中保存

4. 性能优化

  • 使用数据库索引加速查询
  • 支持分页查询避免大数据量问题

相关文档

依赖关系

  • 依赖 002-01: Apex 连接管理ApexConnectionFactory
  • 依赖 002-02: Apex 代码编译和执行(复用数据库表)

兼容性

  • 向后兼容: 是,新增功能不影响现有功能
  • API 版本: Salesforce API 65.0
  • Java 版本: Java 17
  • Spring Boot 版本: 3.2.x

测试建议

  1. 单元测试: 对 Service 层的方法进行单元测试
  2. 集成测试: 测试与 Salesforce API 的集成
  3. 并发测试: 测试多线程环境下的测试执行
  4. 性能测试: 测试大量测试用例的执行性能
  5. 边界测试: 测试空参数、异常参数的处理

已知限制

  1. 固定使用 source org: 所有测试执行操作都使用 source org 类型
  2. Flow 覆盖率命名空间: FlowCoverageResult 使用 flowNamespace 而非 namespace
  3. 测试成功详情字段: DataiApexTestSuccess 实体类没有 message 和 stackTrace 字段Salesforce API 不提供)

后续优化建议

  1. 支持 target org: 扩展支持 target org 类型的测试执行
  2. 异步执行: 支持异步执行长时间运行的测试
  3. 测试报告导出: 支持导出测试报告为 PDF 或 Excel
  4. 历史趋势分析: 支持分析测试历史趋势
  5. 覆盖率阈值告警: 支持设置覆盖率阈值并告警