单元测试是确保代码质量的重要环节,Cursor AI能够智能分析你的代码逻辑,自动生成高质量的单元测试,支持多种测试框架,大大提升开发效率和测试覆盖率。
function calculateTotal(price, tax, discount = 0) {
if (price <= 0) throw new Error('价格必须大于0');
if (tax < 0) throw new Error('税率不能为负数');
const subtotal = price * (1 + tax);
return Math.max(0, subtotal - discount);
}
describe('calculateTotal', () => {
test('正常计算价格、税费和折扣', () => {
expect(calculateTotal(100, 0.1, 10)).toBe(100);
expect(calculateTotal(200, 0.2, 50)).toBe(190);
});
test('处理边界情况', () => {
expect(calculateTotal(100, 0.1, 120)).toBe(0); // 折扣大于总价
expect(calculateTotal(1, 0, 0)).toBe(1); // 最小正数价格
});
test('抛出错误情况', () => {
expect(() => calculateTotal(0, 0.1)).toThrow('价格必须大于0');
expect(() => calculateTotal(-1, 0.1)).toThrow('价格必须大于0');
expect(() => calculateTotal(100, -0.1)).toThrow('税率不能为负数');
});
});
def validate_email(email):
"""验证邮箱地址格式"""
import re
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
if not email:
raise ValueError("邮箱地址不能为空")
return bool(re.match(pattern, email))
import pytest
from your_module import validate_email
class TestValidateEmail:
def test_valid_emails(self):
"""测试有效邮箱格式"""
valid_emails = [
"user@example.com",
"test.email+tag@domain.co.uk",
"123@test-domain.org"
]
for email in valid_emails:
assert validate_email(email) == True
def test_invalid_emails(self):
"""测试无效邮箱格式"""
invalid_emails = [
"invalid.email",
"@domain.com",
"user@",
"user space@domain.com"
]
for email in invalid_emails:
assert validate_email(email) == False
def test_empty_email(self):
"""测试空邮箱处理"""
with pytest.raises(ValueError, match="邮箱地址不能为空"):
validate_email("")
validate_email(None)
针对RESTful API,Cursor AI可以生成完整的HTTP测试用例,包括请求参数验证、响应数据检查、错误状态码处理等。结合AI聊天功能,能快速生成Mock数据和测试场景。
对于涉及数据库的代码,AI能生成包含数据准备、操作执行、结果验证的完整测试流程,并自动处理事务回滚和数据清理。
面对复杂的业务逻辑,AI会分析代码路径,生成覆盖各种条件分支的测试用例,确保逻辑的完整性和健壮性。更多高级功能可参考:Cursor前端开发工作流。
注意事项:AI生成的测试代码需要根据实际项目需求进行调整和优化,特别是涉及外部服务、数据库连接等复杂依赖的测试场景。