当前位置: 首页 > news >正文

如何让AI生成项目的单元测试,propmt技巧详解

比如你的项目是一个典型的Java (Spring Boot) + Vue3的前后端分离项目。

为了让 AI(无论是我、ChatGPT 还是其他代码模型)生成高质量的测试代码,你需要提供具体的上下文。AI 不能凭空猜你的数据库字段或接口参数。

以下是为你定制的Prompt 模板,你可以直接复制使用。为了获得最佳效果,建议你分模块、分文件地向 AI 提问,而不是一次性丢给它整个项目。


🚀 通用 Prompt 结构(万能公式)

无论你让 AI 写哪种测试,Prompt 最好包含以下 4 个要素:

  1. 角色设定:告诉 AI 它是谁。
  2. 上下文:提供代码或文档片段(你已经上传了文档,这很好)。
  3. 具体任务:明确要生成什么。
  4. 输出要求:指定格式(如 JUnit 5、Mockito、JSON 等)。

🧪 场景一:生成后端单元测试 (Java)

适用对象:你的Service层逻辑,比如CertificateTimeRangeFilterService(时间筛选逻辑)或CertificateGradeService(等级比较逻辑)。

你的输入:复制粘贴具体的 Java 类或方法代码。
使用的 Prompt

角色:你是一个资深的 Java 架构师,擅长编写高质量的单元测试。

上下文
这是一个 Spring Boot 项目中的证书管理模块。这是CertificateGradeService的代码(或者粘贴具体的代码片段):

java

编辑

1// 在这里粘贴你的 Java 代码,例如: 2public enum CertificateGrade { ... } 3public int compareCertificateGrades(String grade1, String grade2) { ... }

任务
请为这个类/方法生成 JUnit 5 单元测试用例。

要求

  1. 使用@ExtendWith(MockitoExtension.class)
  2. 覆盖所有分支逻辑(例如:grade1 为空、grade2 为空、正常比较)。
  3. 使用@ParameterizedTest@ValueSource/@CsvSource来测试多种输入组合。
  4. 对于枚举类,测试所有枚举值的优先级排序是否正确。
  5. 断言要具体(使用assertEquals,assertTrue等)。

🐞 场景二:生成后端接口测试用例 (API Testing)

适用对象:你的Controller层接口,比如/project/certificate/list

你的输入:提供 API 的定义或文档描述。
使用的 Prompt

角色:你是一个专业的后端测试工程师。

上下文
这是一个证书管理系统的 API 接口文档:

  • 接口GET /project/certificate/list
  • 功能:分页查询证书列表,支持按名称、类型、等级、时间范围筛选。
  • 参数pageNum,pageSize,certificateName(模糊查询),certificateType,dateFilterType(GENERAL/PATENT),validStartDate,validEndDate

任务
请设计一份详细的接口测试用例表,并生成对应的 JSON 格式的请求示例。

要求

  1. 正常场景:参数完整,查询有效数据。
  2. 边界值分析
    • pageNum= 0 或负数(预期:默认为1)
    • pageSize= 1(最小页)或 1000(最大页)
    • 时间范围:开始时间等于结束时间。
  3. 异常场景
    • 必填参数缺失(如不传 pageNum)。
    • 参数类型错误(如传字符串给 pageNum)。
    • 时间格式错误。
  4. 输出格式:Markdown 表格,包含“用例描述”、“请求参数”、“预期状态码”、“预期响应”。

🦋 场景三:生成前端单元测试 (Vue.js)

适用对象:你的 Vue 组件逻辑,比如index.vue中的calculateTableHeightgetDateFieldValue方法。

你的输入:复制粘贴<script setup>中的关键逻辑。
使用的 Prompt

角色:你是一个前端测试专家,精通 Vue Test Utils 和 Jest。

上下文
这是一个 Vue3 + Element Plus 的证书管理页面组件。这是<script setup>中的逻辑片段:

javascript

编辑

1// 在这里粘贴你的 JS 逻辑,例如: 2const getDateFieldValue = (row) => { ... } 3const calculateTableHeight = () => { ... }

任务
请为这些函数/组件逻辑生成单元测试。

要求

  1. 使用 Jest 框架。
  2. 模拟window.innerHeight的不同值(例如 800px, 600px),测试calculateTableHeight是否正确计算了减去预留高度后的值。
  3. 测试getDateFieldValue在不同queryParams.value.dateFilterType(PATENT, SOFTWARE_COPYRIGHT, GENERAL)下的返回值是否正确。
  4. 使用describetest块组织代码。

💡 给你的特别建议(基于你的文档)

根据你的《证书管理模块开发方案》,有几个逻辑复杂点特别适合让 AI 帮你写测试,因为这些地方容易出 Bug:

  1. 时间字段的动态筛选逻辑

    • 代码位置:CertificateTimeRangeFilterService中的getEffectiveDateField
    • 提示词重点:请生成测试用例,验证当dateFilterTypePATENT时,SQL 条件是否正确指向authorization_announce_date字段;当为GENERAL时是否指向expiry_date
  2. 证书等级的智能匹配

    • 代码位置:CertificateGradeService中的intelligentMatchGrade
    • 提示词重点:请生成测试数据,输入包含“国家”、“national”、“国”、“省”、“市”等关键词的字符串,验证是否能正确匹配到NATIONALPROVINCIAL枚举。
  3. 文件类型验证

    • 代码位置:validateCertificateFile
    • 提示词重点:请生成边界测试用例,例如上传.exe文件(预期拒绝)、超大尺寸文件(预期拒绝)、以及正常的.pdf.jpg(预期通过)。
http://www.jsqmd.com/news/932777/

相关文章:

  • OpencvSharp 算子学习教案之 - Cv2.GetOptimalDFTSize
  • 拾贰指沐影院式足道费用高不高 - mypinpai
  • 基于Rao-Blackwellized粒子滤波与多融合策略全阶 EKF 的双车协同 SLAM 研究(Matlab代码实现)
  • Sora 2交互设计白皮书首发,揭秘OpenAI未公开的7层反馈闭环机制,含真实A/B测试数据集
  • VisualCppRedist AIO深度解析:一站式自动化部署的技术实现与架构剖析
  • 2026 无锡瓷砖空鼓翘边维修哪家靠谱?七大区优质修缮企业综合盘点 - 吉修匠
  • 别再只会生成黑白方块了!用Python的qrcode库给你的二维码换个皮肤(附完整代码)
  • 2026立式食品包装机技术解析:立式粉料包装机/立式粉末包装机/立式酱料包装机/立式零食包装机/立式颗粒包装机/选择指南 - 优质品牌商家
  • OmenSuperHub终极指南:5步解锁惠普OMEN游戏本隐藏性能
  • 隐私保护计算在AI大模型中的关键技术与应用
  • 用Python和NumPy模拟一个健康预测模型:从保险案例到代码实现
  • 2026南通商铺瓷砖空鼓翘边维修机构排名 八大区商业修缮服务商盘点 - 吉修匠
  • 2026年6月成都稳压器供应商选择指南:专业、可靠与本地化服务是关键 - 2026年企业资讯
  • 2026AI Agent元年:从“会聊天“到“能干活“,万亿市场变革!企业如何抢占先机?
  • DMA控制器原理
  • 2026年硅胶灯带防水罩价格排名 - mypinpai
  • Arduino引脚扩展实战:用74HC595驱动数码管与PCB设计
  • ThinkPad R61i升级T9300处理器专用BIOS刷写包:含WinPE启动工具、校验脚本与完整操作指引
  • 2026南通厨卫瓷砖空鼓翘边维修机构排名 八大区正规服务商精选 - 吉修匠
  • 2026 无锡厨卫瓷砖空鼓翘边维修机构排名 七大区正规服务商精选 - 吉修匠
  • 2026年推荐:瘦身期亚麻籽油美味吃法靠谱吗 - mypinpai
  • 与AI同行,答案在人手中:普通人如何逆袭,稳稳向前冲?
  • 优选算法——栈
  • 做录播,只改画面,没改声音是不行的!
  • 实验报告二
  • 智慧职教自动刷课脚本终极指南:3步实现全平台自动化学习解决方案
  • 光电效应实验避坑指南:暗电流、本底电流和遏止电压到底怎么测才准?
  • 2026年金平装修设计技术解析:汕头设计/潮阳装修设计/澄海装修设计/金平装修设计/龙湖旧房翻新/龙湖装修设计/选择指南 - 优质品牌商家
  • YOLOv8车辆识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置)
  • 发泡混凝土设备技术全解析:水泥发泡机械设备、水泥发泡机设备、泡沫混凝土水泥发泡机、泡沫混凝土设备机器、泡沫轻质土机械选择指南 - 优质品牌商家