生成真正有用的單元測試
代碼寫完了,測試還沒寫,不知道該測什麼。
提示詞長度
161
tokens
建議模型
Flash
單次成本(離峰)
$0.00020
Flash
跑一萬次
$2.04
Flash 離峰
提示詞全文
為下面的函數生成單元測試。
代碼:
```
{{代碼}}
```
測試要求:
1. 先列出這個函數的輸入邊界(正常值、邊界值、非法值),再寫測試
2. 每個測試只驗證一件事,測試名稱要說明「驗證什麼」
3. 必須包含至少一個「預期會失敗」的用例(錯誤輸入、異常處理)
4. 不要為了提高覆蓋率而寫無意義的測試(例如只調用不斷言)
輸出格式:
- 先給測試清單(測試名稱 + 驗證什麼),讓我確認方向
- 確認後再給完整測試代碼
框架:{{測試框架}}
為什麼這樣寫
- 「先列測試清單再寫代碼」是關鍵。直接要代碼,會得到 20 個 only-assert-not-null 的測試。
- 要求「預期失敗的用例」,補上了 AI 生成測試最常見的缺口 —— 它傾向只測 happy path。
- 「不要為覆蓋率寫無意義測試」直接針對 AI 產測試的通病:數量多但抓不到 bug。
成本
按上面這段提示詞估算(輸入 161 tokens、輸出 300 tokens)。輸出長度依任務而定,實際會有差異。
| 模型 | 單次(高峰) | 單次(離峰) | 1 萬次(高峰) | 1 萬次(離峰) |
|---|---|---|---|---|
| DeepSeek Flash | $0.00041 | $0.00020 | $4.08 | $2.04 |
| DeepSeek V4 Pro | $0.00140 | $0.00070 | $14.01 | $7.00 |
模型建議:單元測試生成是模式化任務,Flash 表現已足夠,且輸出較長,用 V4 Pro 成本差距明顯。
變體
- 已有測試時,改成「讀現有測試的風格,按同樣的命名與斷言方式補齊缺失的邊界用例」。
- 要測外部依賴時,加「用 mock 隔離網絡與文件操作,並說明每個 mock 的原因」。
常見失敗
- 不先要清單,會直接拿到大量低價值測試,review 成本比自己寫還高。
- 不指定框架,可能給出與專案不符的測試寫法。