答案是:应严格按生产日志、原始请求体、HTTP头、代码边界和验证路径生成可执行单元测试,聚焦复现+定位+验证闭环。需一字不改粘贴含时区偏移的Jackson反序列化堆栈,锁定PaymentCallbackController.java第87~92行,仅修改测试类,禁动DTO/Service/Jackson配置,注入带"+08:00"日期和浮点精度误差的JSON,强制命名shouldFailWhen\_开头,首行注释REPRO,次行注释EXPECT异常断言。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜
你正在写一个支付回调接口,本地跑通了但上线后偶发500错误,想让claude生成能复现并定位问题的单元测试用例,而不是泛泛而谈“加个test case”。把真实报错日志原样塞进提示词开头
直接复制粘贴生产环境日志里那段红色堆栈,包括时间戳、服务名、完整异常类名和嵌套cause。不要删掉“Caused by”之后的那几行——Claude需要看到底层是Jackson反序列化失败,而不是只看到顶层的HttpServerErrorException。
这一步必须一字不改。如果你改成“报了个反序列化错误”,Claude会按通用场景生成测试,比如测空字符串或null,而你的实际问题是日期格式为"2026-06-13T14:22:07+08:00"但Jackson配置只认Zulu时区。
【真实日志中带有时区偏移量+08:00,但测试用例若忽略该细节,将无法复现线上问题】
绑定具体代码位置与不可修改边界
在提示词中明确写出:你正在修改的文件是PaymentCallbackController.java第87~92行,其中handleCallback()方法调用了paymentService.process(callbackDto);你只能动测试类,不能碰DTO定义、Service实现或Jackson配置。
说明白哪些地方“禁止生成代码”比说明“要生成什么”更重要。否则Claude可能给你重写一个带@JsonIgnore的DTO字段,而你连PR权限都没有。
强制注入最小可复现输入
方法一:提供脱敏后的原始请求体片段
直接粘贴curl命令里-X POST后面的JSON,保留换行缩进和所有字段,哪怕有个字段值是"amount":"99.90000000000001"这种浮点误差——这正是触发BigDecimal构造异常的关键点。
方法二:给出HTTP头关键项
写明:Content-Type: application/json;charset=UTF-8 和 X-Request-ID: req_abc123xyz。很多测试框架默认不设charset,导致中文字段乱码,继而引发后续校验失败。
注意:如果原始请求含签名头X-Signature,必须声明“测试中跳过签名验证”,否则Claude会傻乎乎地去模拟HMAC逻辑,偏离核心问题。
要求输出必须含可执行验证路径
第一步:生成的测试方法名必须以shouldFailWhen_开头,例如shouldFailWhen_amountHasFloatingPointPrecisionError();
第二步:每个测试方法体内第一行必须是// REPRO: copy-paste this JSON into Postman to trigger same 500;
第三步:在断言前插入一行注释// EXPECT: throws IllegalArgumentException with message containing "Cannot construct instance of java.math.BigDecimal"。
这三步缺一不可。没有第一行,你没法快速对齐用例意图;没有第二行,你就得手动还原请求体;没有第三行,CI跑过就以为没问题,其实只是没抛对异常。


















