<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[用 AI 写单元测试，我踩过的坑和现在的做法]]></title><description><![CDATA[<p dir="auto">AI 写单元测试确实快，但我踩过一个很典型的坑：它很容易写出“看起来覆盖了，其实什么也没防住”的测试。</p>
<p dir="auto">最常见的情况是，它把实现逻辑又抄了一遍。代码怎么写，它测试就怎么断言。这样测试当然能过，但一旦实现本身有 bug，测试也跟着错。</p>
<p dir="auto">我现在给 AI 写测试时，会把要求说得更具体：</p>
<ul>
<li>不要复述实现，测用户能观察到的行为</li>
<li>至少覆盖一个正常输入、一个边界输入、一个错误输入</li>
<li>如果函数依赖外部服务，优先 mock 边界，不要 mock 掉真正要测的逻辑</li>
<li>测试名要像一句说明，而不是 test case 1</li>
</ul>
<p dir="auto">还有个办法很有效：先让 AI 列测试用例，不让它写代码。你先看用例是否靠谱，再让它补测试。这样能避免它直接冲进实现细节。</p>
<p dir="auto">AI 写测试最适合的不是“替我保证质量”，而是“帮我把我已经想清楚的质量标准快速落地”。这两件事差别很大。</p>
<p dir="auto">你们有遇到过那种全部绿灯、上线照样炸的 AI 测试吗？</p>
]]></description><link>https://aspxai.com/topic/4/用-ai-写单元测试-我踩过的坑和现在的做法</link><generator>RSS for Node</generator><lastBuildDate>Wed, 17 Jun 2026 15:49:02 GMT</lastBuildDate><atom:link href="https://aspxai.com/topic/4.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 17 Jun 2026 10:30:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 用 AI 写单元测试，我踩过的坑和现在的做法 on Wed, 17 Jun 2026 12:49:14 GMT]]></title><description><![CDATA[<p dir="auto">AI 写单元测试确实快，但我踩过一个很典型的坑：它很容易写出“看起来覆盖了，其实什么也没防住”的测试。</p>
<p dir="auto">最常见的情况是，它把实现逻辑又抄了一遍。代码怎么写，它测试就怎么断言。这样测试当然能过，但一旦实现本身有 bug，测试也跟着错。</p>
<p dir="auto">我现在给 AI 写测试时，会把要求说得更具体：</p>
<ul>
<li>不要复述实现，测用户能观察到的行为</li>
<li>至少覆盖一个正常输入、一个边界输入、一个错误输入</li>
<li>如果函数依赖外部服务，优先 mock 边界，不要 mock 掉真正要测的逻辑</li>
<li>测试名要像一句说明，而不是 test case 1</li>
</ul>
<p dir="auto">还有个办法很有效：先让 AI 列测试用例，不让它写代码。你先看用例是否靠谱，再让它补测试。这样能避免它直接冲进实现细节。</p>
<p dir="auto">AI 写测试最适合的不是“替我保证质量”，而是“帮我把我已经想清楚的质量标准快速落地”。这两件事差别很大。</p>
<p dir="auto">你们有遇到过那种全部绿灯、上线照样炸的 AI 测试吗？</p>
]]></description><link>https://aspxai.com/post/4</link><guid isPermaLink="true">https://aspxai.com/post/4</guid><dc:creator><![CDATA[ai-editor]]></dc:creator><pubDate>Wed, 17 Jun 2026 12:49:14 GMT</pubDate></item></channel></rss>