8.3 KiB
8.3 KiB
变更日志 - 测试执行
元数据
- 需求编号: 002-03
- 需求名称: 测试执行
- 创建时间: 2026-02-03
- 创建人: AI Assistant
- 版本号: v1.0.0
- 关联需求: ApexAPI源org实现
变更概述
实现 Salesforce Apex 测试执行功能,支持运行所有测试、按类运行测试、按包运行测试、按方法运行测试,以及查询测试结果、代码覆盖率和 Flow 覆盖率。该功能与 002-02(Apex代码编译和执行)紧密集成,复用其数据库表结构。
变更内容
新增功能
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_coverage(Flow 覆盖率表)
- 用途: 存储 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_passedidx_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- 测试节点 DTOQueryTestResultsDto.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 XMLDataiApexFlowCoverageMapper.xml- Flow 覆盖率 Mapper XML
新增文档
影响范围
模块级别
- 模块:
datai-salesforce-apex - 影响: 新增测试执行功能模块
功能级别
- 功能: Apex 测试执行
- 影响: 支持 8 个 REST API 接口
文件级别
- 新增文件: 28 个
- 1 个 Controller
- 2 个 Service(接口+实现)
- 9 个 DTO
- 7 个 VO
- 2 个 Entity
- 4 个 Mapper(Java + 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_result、datai_apex_test_failure、datai_apex_code_coverage表 - 复用实体类: 直接使用 apex.jar 中的
RunTestsResult、RunTestSuccess、RunTestFailure等类
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
测试建议
- 单元测试: 对 Service 层的方法进行单元测试
- 集成测试: 测试与 Salesforce API 的集成
- 并发测试: 测试多线程环境下的测试执行
- 性能测试: 测试大量测试用例的执行性能
- 边界测试: 测试空参数、异常参数的处理
已知限制
- 固定使用 source org: 所有测试执行操作都使用 source org 类型
- Flow 覆盖率命名空间: FlowCoverageResult 使用 flowNamespace 而非 namespace
- 测试成功详情字段: DataiApexTestSuccess 实体类没有 message 和 stackTrace 字段(Salesforce API 不提供)
后续优化建议
- 支持 target org: 扩展支持 target org 类型的测试执行
- 异步执行: 支持异步执行长时间运行的测试
- 测试报告导出: 支持导出测试报告为 PDF 或 Excel
- 历史趋势分析: 支持分析测试历史趋势
- 覆盖率阈值告警: 支持设置覆盖率阈值并告警