依据:
科技项目与活动功能需求.md、科技项目与活动技术方案.md
接口 Base Path(示例):/innovationPlatform/techProjectGuide;鉴权与若依一致。
项目类型编码:002001高新技术 /002002农业科技 /002003社会发展 /002004基础研究(parentCode=002)。发布状态:0未发布 /1已发布。
通用前置(无特殊说明):具备本模块菜单与按钮权限的账号已登录。
界面(UI)测试:借助 Playwright 启动 Chromium(可配置 channel: 'chrome' 使用本机 Google Chrome)。
| 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 |
|---|---|---|---|---|---|---|---|---|
| KJXM-UT-001 | 参数校验 | 项目类型编码 | 单元测试 | JUnit5 | 有效资讯编码 | Mock 子集含 002001~002004 | 空、999999 失败;002002 通过 |
与技术方案 §2.3 一致 |
| KJXM-UT-002 | 参数校验 | 项目名称长度 | 单元测试 | JUnit5 | §5.1 | 无 | 空串、21 字、20 字 | 空/21 失败;20 通过 |
| KJXM-UT-003 | 参数校验 | 项目简介长度 | 单元测试 | JUnit5 | 1~50 字 | 无 | 0 字、51 字、50 字 | 0/51 失败;50 通过 |
| KJXM-UT-004 | 参数校验 | 申报日期关系 | 单元测试 | JUnit5 | §2.3 | 无 | 开始 2026-06-01、截止 2026-05-01 / 同天 | 前者失败;同天通过 |
| KJXM-UT-005 | 参数校验 | 手机号格式 | 单元测试 | JUnit5 | §5.1 | 无 | 13800138000、12345、空 |
合法通过;非法/空失败 |
| KJXM-UT-006 | 参数校验 | 负责人长度 | 单元测试 | JUnit5 | 1~10 字 | 无 | 0 字、11 字、10 字 | 0/11 失败;10 通过 |
| KJXM-UT-007 | 附件校验 | 后缀白名单 | 单元测试 | JUnit5 | §3.2 | 无 | a.pdf、a.exe |
pdf 通过;exe 失败 |
| KJXM-UT-008 | 封面校验 | 图片后缀 | 单元测试 | JUnit5 | §3.2 | 无 | a.png、a.pdf |
png 通过;pdf 失败 |
| KJXM-UT-009 | 状态机 | 已发布禁止修改 | 单元测试 | JUnit5+Mockito | §3.3 | 记录 publish_status=1 |
调用 update |
抛业务异常或返回失败 |
| KJXM-UT-010 | 状态机 | 已发布禁止删除 | 单元测试 | JUnit5+Mockito | §5.4 | 已发布记录 | deleteById |
失败 |
| KJXM-UT-011 | 状态机 | 未发布禁止下架 | 单元测试 | JUnit5+Mockito | §5.6 | publish_status=0 |
offline |
失败 |
| KJXM-UT-012 | 状态机 | 发布写状态与时间 | 单元测试 | JUnit5+Mockito | §5.6 | 未发布且字段合法 | publish(id) |
publish_status=1;publish_time 非空 |
| KJXM-UT-013 | 状态机 | 下架保留发布日期 | 单元测试 | JUnit5+Mockito | 功能需求 §5.6 | 已发布有 publish_time |
offline(id) |
publish_status=0;publish_time 不变 |
| KJXM-UT-014 | Service | 新增 saveAndPublish | 单元测试 | JUnit5+Mockito | §3.3.1 | 合法 Body | insert 且 saveAndPublish=true |
落库已发布 |
| KJXM-UT-015 | Service | 替换附件删旧文件 | 单元测试 | JUnit5+Mockito | §3.4 | 未发布有旧 path | update 换新 path |
调用文件删除旧 path |
| KJXM-UT-016 | Service | 列表筛选 SQL | 单元测试 | JUnit5 | §3.1.1 | 无 | projectName=科技、projectType=002002 |
XML 含 like 与 project_type=002002 |
| 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 |
|---|---|---|---|---|---|---|---|---|
| KJXM-API-001 | 列表 | 默认分页排序 | 接口测试 | Postman/curl | §5.2 | 已登录;含已发布/未发布 | GET .../list |
rows≤20;已发布按 publishTime 靠前 |
| KJXM-API-002 | 列表 | 项目名称模糊 | 接口测试 | Postman | 模糊 | 含「示范」与「试点」 | projectName=示范 |
仅名称含「示范」 |
| KJXM-API-003 | 列表 | 项目类型精确 | 接口测试 | Postman | 精确 | 含类型编码 | projectType=002002 |
仅农业科技 |
| KJXM-API-004 | 列表 | 发布状态筛选 | 接口测试 | Postman | §5.2 | 含 0、1 各一条 | publishStatus=0 |
仅未发布 |
| KJXM-API-005 | 新增 | 仅保存未发布 | 接口测试 | Postman | §5.1 | 已登录 | POST 合法全必填;不传 saveAndPublish |
成功;publishStatus=0;publishTime 空 |
| KJXM-API-006 | 新增 | 保存并发布 | 接口测试 | Postman | §5.1 | 已登录 | POST + saveAndPublish=true |
成功;publishStatus=1;publishTime 有值 |
| KJXM-API-007 | 新增 | 必填缺失 | 接口测试 | Postman | 必填 | 已登录 | 缺 projectName |
失败;msg 可读 |
| KJXM-API-008 | 新增 | 截止早于开始 | 接口测试 | Postman | §2.3 | 已登录 | 开始 2026-07-01、截止 2026-06-01 | 失败 |
| KJXM-API-009 | 新增 | 非法项目类型 | 接口测试 | Postman | §3.2 | 已登录 | projectType=999999 |
失败;提示含「项目类型无效」 |
| KJXM-API-010 | 新增 | 手机号非法 | 接口测试 | Postman | §5.1 | 已登录 | contactPhone=123 |
失败 |
| KJXM-API-011 | 详情 | 有效 id | 接口测试 | Postman | §5.5 | 已登录 | GET .../{id} |
含全部业务字段与 publishStatus |
| KJXM-API-012 | 详情 | 无效 id | 接口测试 | Postman | 异常 | 已登录 | 不存在 id | 404 或业务失败 |
| KJXM-API-013 | 修改 | 未发布合法修改 | 接口测试 | Postman | §5.3 | 未发布记录 | PUT 改 projectIntro |
成功;详情已更新 |
| KJXM-API-014 | 修改 | 已发布拒绝修改 | 接口测试 | Postman | §6 | 已发布记录 | PUT 改任意字段 |
失败;数据不变 |
| KJXM-API-015 | 删除 | 未发布删除 | 接口测试 | Postman | §5.4 | 未发布 id | DELETE .../{id} |
成功;详情不可查 |
| KJXM-API-016 | 删除 | 已发布拒绝删除 | 接口测试 | Postman | §5.4 | 已发布 id | DELETE |
失败 |
| KJXM-API-017 | 发布 | 未发布发布 | 接口测试 | Postman | §5.6 | 未发布 id | POST .../publish/{id} |
publishStatus=1 |
| KJXM-API-018 | 发布 | 已发布重复发布 | 接口测试 | Postman | 异常 | 已发布 id | 再次 publish |
失败 |
| KJXM-API-019 | 下架 | 已发布下架 | 接口测试 | Postman | §5.6 | 已发布 id | POST .../offline/{id} |
publishStatus=0 |
| KJXM-API-020 | 下架 | 未发布拒绝下架 | 接口测试 | Postman | 异常 | 未发布 id | offline |
失败 |
| KJXM-API-021 | 端到端 | 下架后改再发布 | 接口测试 | Postman | §4 | 已发布记录 | offline→PUT 改名称→publish | 各步成功;最终已发布且名称已改 |
| KJXM-API-022 | 端到端 | 新增至删除 | 接口测试 | Postman | 正常流 | 已登录 | 新增(未发布)→列表→详情→改→删 | 各步成功;删除后列表无 |
| KJXM-API-023 | 鉴权 | 未登录 | 接口测试 | curl | 安全 | 无 Token | GET .../list |
401 或统一未登录 |
| KJXM-API-024 | 权限 | 无写权限 | 接口测试 | Postman | 越权 | 仅 list 权限 | POST/PUT/DELETE/publish |
无权限失败 |
| KJXM-API-025 | 响应 | 失败可区分 | 接口测试 | Postman | §8 | 已登录 | 触发 API-008、014、016 | code、msg 可区分场景 |
测试工具:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
| 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 |
|---|---|---|---|---|---|---|---|---|
| KJXM-UI-001 | 列表 | 页面加载与列 | UI 测试 | Playwright+Chrome | §5.2 | 已登录;有数据 | 进入「科技项目与活动」 | 显示项目名称、类型、申报起止、发布日期、操作列 |
| KJXM-UI-002 | 列表 | 项目名称筛选 | UI 测试 | Playwright+Chrome | 模糊 | 多条数据 | 输入项目名称关键字→搜索 | 仅匹配行 |
| KJXM-UI-003 | 列表 | 项目类型筛选 | UI 测试 | Playwright+Chrome | 精确 | 多类型数据 | 选「农业科技」→搜索 | 仅类型为农业科技 |
| KJXM-UI-004 | 列表 | 重置筛选 | UI 测试 | Playwright+Chrome | 恢复 | 已筛选 | 点「重置」 | 条件清空;显示全部 |
| KJXM-UI-005 | 列表 | 未发布操作列 | UI 测试 | Playwright+Chrome | §6 | 未发布行 | 查看操作列 | 查看、发布、编辑、删除可见(按权限) |
| KJXM-UI-006 | 列表 | 已发布操作列 | UI 测试 | Playwright+Chrome | §6 | 已发布行 | 查看操作列 | 仅查看、下架;无编辑删除 |
| KJXM-UI-007 | 新增 | 仅保存未发布 | UI 测试 | Playwright+Chrome | §5.1 | 已登录 | 新增→填全必填→点「确定/保存」 | 成功;列表发布状态未发布 |
| KJXM-UI-008 | 新增 | 保存并发布 | UI 测试 | Playwright+Chrome | §5.1 | 已登录 | 新增→填全必填→点「发布」 | 成功;列表已发布且有发布日期 |
| KJXM-UI-009 | 新增 | 必填校验 | UI 测试 | Playwright+Chrome | 必填 | 已登录 | 漏填项目名称→提交 | 前端校验失败,未提交 |
| KJXM-UI-010 | 新增 | 申报截止早于开始 | UI 测试 | Playwright+Chrome | §2.3 | 已登录 | 开始晚于截止→保存 | 提示截止日期不能早于开始日期 |
| KJXM-UI-011 | 新增 | 手机号校验 | UI 测试 | Playwright+Chrome | §5.1 | 已登录 | 联系方式填非法→保存 | 提示手机号错误 |
| KJXM-UI-012 | 编辑 | 未发布修改成功 | UI 测试 | Playwright+Chrome | §5.3 | 未发布行 | 编辑→改项目简介→保存 | 列表/详情已更新 |
| KJXM-UI-013 | 编辑 | 已发布无编辑入口 | UI 测试 | Playwright+Chrome | §5.3 | 已发布行 | 查看操作列与详情 | 无「编辑」或点击无效 |
| KJXM-UI-014 | 发布 | 列表发布 | UI 测试 | Playwright+Chrome | §5.6 | 未发布行 | 点「发布」→确认 | 状态变已发布;发布日期显示 |
| KJXM-UI-015 | 下架 | 列表下架 | UI 测试 | Playwright+Chrome | §5.6 | 已发布行 | 点「下架」→确认 | 变未发布;可出现编辑删除 |
| KJXM-UI-016 | 删除 | 未发布删除确认 | UI 测试 | Playwright+Chrome | §5.4 | 未发布行 | 删除→确认 | 行消失 |
| KJXM-UI-017 | 删除 | 取消删除 | UI 测试 | Playwright+Chrome | 确认框 | 未发布行 | 删除→取消 | 行仍在 |
| KJXM-UI-018 | 删除 | 已发布不可删 | UI 测试 | Playwright+Chrome | §5.4 | 已发布行 | 尝试删除 | 无删除按钮或提示须先下架 |
| KJXM-UI-019 | 详情 | 查看只读 | UI 测试 | Playwright+Chrome | §5.5 | 任意行 | 点「查看」 | 弹窗/页展示全部字段只读 |
| KJXM-UI-020 | 上传 | 附件格式限制 | UI 测试 | Playwright+Chrome | §5.1 | 新增表单 | 上传非允许后缀 | 前端拒绝或提示格式错误 |
| KJXM-UI-021 | 端到端 | 下架后编辑再发布 | UI 测试 | Playwright+Chrome | §4 | 已发布行 | 下架→编辑改名称→保存→发布 | 全流程成功;列表显示新名称且已发布 |
| 需求章节 | 覆盖用例(示例) |
|---|---|
| §5.1 新增与校验 | UT-001~008;API-005~010;UI-007~011、020 |
| §5.2 列表筛选 | UT-016;API-001~004;UI-001~004 |
| §5.3 修改约束 | UT-009;API-013~014;UI-012~013 |
| §5.4 删除 | UT-010;API-015~016;UI-016~018 |
| §5.5 详情 | API-011~012;UI-019 |
| §5.6 发布/下架 | UT-011~014;API-006、017~021;UI-008、014~015、021 |
| §6 操作矩阵 | UI-005~006、013、018 |
| §8 异常提示 | API-007~010、025;UI-009~011 |