
写代码简单,写测试却难?
其实,使用 Cursor 只要几句话,就能轻松生成单元测试、集成测试,甚至是模拟 mock 的代码。关键在于——你得知道怎么“问对问题”!
今天我们就来实践一下:如何利用 Cursor 快速生成高质量的测试用例。
一、AI 能生成哪些测试用例?
Cursor 借助 GPT-4 等先进模型,结合你的项目背景,可以迅速为你生成:
• ✅ 单元测试(Unit Test)
• ✅ 接口测试(API Test)
• ✅ 模拟依赖注入(Mock)
• ✅ 异常和边界情况测试
• ✅ 参数化测试(Parameterized Test)
支持的语言包括:Jest、PHPUnit、Pytest、Mocha、Vitest、JUnit、Go Test…(几乎涵盖了所有主流框架)
二、基本用法:选中函数 → Ask Cursor
示例:你有一个 JS 函数
export function add(a: number, b: number): number {
return a + b;
}
操作步骤:
1. 用鼠标选中函数
2. 右键点击选择「Ask Cursor」
3. 输入指令:“为这个函数写一个 Jest 测试用例”
得到的结果可能是:
import { add } from './math';
describe('add', () => {
it('should return the sum of two numbers', () => {
expect(add(2, 3)).toBe(5);
});
it('should work with negative numbers', () => {
expect(add(-1, -2)).toBe(-3);
});
});
这样是不是省下了不少时间?
三、进阶技巧:让测试更全面、易维护
1. 用自然语言指定测试点
你在指令中可以添加更多细节:
• “写 3 个正常输入和边界值的测试”
• “添加一个输入为空数组的异常测试”
• “再加一个 mock axios 的接口请求测试”
示例指令:
“为这个 fetchUserInfo 函数写一个单元测试,要求 mock 掉 axios,并覆盖失败时的逻辑。”
2. 自动生成 PHPUnit 测试类(适合 Laravel 等项目)
public function getUserData(int $id): array {
return User::findOrFail($id)->toArray();
}
你可以 Ask Cursor:
“为这个方法生成一个 PHPUnit 的测试方法,包含 user 存在和不存在两种情况”
它就会生成类似这样的代码:
public function test_get_user_data_success() {
User::factory()->create(['id' => 1]);
$result = $this->getUserData(1);
$this->assertIsArray($result);
}
public function test_get_user_data_not_found() {
$this->expectException(ModelNotFoundException::class);
$this->getUserData(999);
}
3. 生成 API 接口测试(适配 Postman 或 Supertest)
假设你有一个这样的接口方法:
router.post('/login', async (req, res) => {
const { username, password } = req.body;
// ...
});
你可以对它说:
“为这个接口生成一个使用 supertest 的接口测试代码,包括登录成功和失败的场景。”
Cursor 会自动生成类似的代码:
import request from 'supertest';
import app from '../app';
describe('POST /login', () => {
it('should return 200 if login succeeds', async () => {
const res = await request(app)
.post('/login')
.send({ username: 'user', password: 'pass' });
expect(res.statusCode).toBe(200);
});
it('should return 401 if login fails', async () => {
const res = await request(app)
.post('/login')
.send({ username: 'user', password: 'wrong' });
expect(res.statusCode).toBe(401);
});
});
四、让 Cursor 更了解你的测试风格
提问时可以添加一些「风格偏好」,例如:
• ✅ “使用 jest + ts-jest 风格”
• ✅ “用 Laravel 的 RefreshDatabase Trait”
• ✅ “避免使用匿名函数,保持可维护性”
• ✅ “测试放在 tests/Feature 目录下”
越具体,生成的测试就越符合你团队的风格!
五、测试生成实战小技巧总结
|
场景 |
提问方式(Prompt 示例) |
|
单元测试 |
“为这个函数写 3 个边界值测试” 测试后的那些事儿,别忘了!说到异常处理,你可能会想到:“当参数是 null 的时候,会出现什么错误呢?”这是一个非常实用的测试场景。 再看看 Laravel 模型,别忘了为你的 Repository 编写 PHPUnit 测试哦,这样可以确保它的稳定性! 还有接口测试,假如你在使用 Express,那不妨为这个接口生成 supertest 测试,保障接口的可靠性。 如果要 mock 第三方请求,比如 axios/post,记得只关注业务逻辑的测试,毕竟我们不想让外部因素影响我们的测试结果。 然后说到数据库重置,使用 RefreshDatabase trait 来写测试是个明智之选,能确保你的环境是干净的。 六、写完测试后还能做些什么呢? 除了生成测试代码,Cursor 还能帮上大忙:
✅ 总结:让 AI 助手陪你一起安心写代码! 自动化测试不再是个“苦差事”了!有了 Cursor 的帮助,你就不需要手动拼接接口,也不必再为 mock 第三方请求而烦恼。记住,Cursor 是你全天候的测试好帮手。 最后,给你一句小提示:你负责写业务,AI 来帮你搞定测试! |

利用 Cursor 生成测试用例的思路真不错,能大大节省时间。通过简单的指令就可以实现复杂的测试需求,效果显著。
通过 Cursor 生成测试用例的方式让我眼前一亮,尤其是可以灵活指定测试点,真的是提高了测试的效率和质量。期待更多实用技巧分享!
使用 Cursor 生成测试用例的过程真是太便捷了!我特别喜欢能够通过自然语言指定测试点的功能,这样可以更好地满足项目需求。
使用 Cursor 生成测试用例的效率真的很高,特别是能快速覆盖各种测试情况,省去了很多手动编写的时间。非常实用的技巧!
Cursor 让测试用例的生成变得如此简单,通过自然语言描述需求,真心提升了开发效率。期待在实际项目中多多应用!
用 Cursor 生成测试用例的方式非常高效,尤其是能够轻松处理各种边界情况和异常测试,让我对测试的全面性更有信心。