测试辅助

wescode 为开发者提供全面的测试辅助功能,从自动生成测试用例到覆盖率分析,帮助你写出更可靠的代码。


AI 生成测试用例

基本用法

选中一个函数或类,让 AI 生成测试:

为这个 CalculateDiscount 函数生成单元测试

wescode 会分析函数的:

生成的测试包括:

指定测试框架

wescode 自动检测项目使用的测试框架,也支持手动指定:

用 pytest 为这个函数生成测试
用 Jest 生成测试,使用 describe/it 风格

支持的测试框架:

语言框架
Gotesting、testify
JavaScript/TypeScriptJest、Vitest、Mocha
Pythonpytest、unittest
JavaJUnit、TestNG
Rust内置 test
C#xUnit、NUnit

表驱动测试

对于适合表驱动的场景,wescode 会自动采用这种模式:

用表驱动的方式为这个解析函数生成测试

示例输出(Go):

func TestParseConfig(t *testing.T) {
    tests := []struct {
        name    string
        input   string
        want    *Config
        wantErr bool
    }{
        {"valid config", `{"port":8080}`, &Config{Port: 8080}, false},
        {"empty input", "", nil, true},
        {"invalid json", "{bad", nil, true},
        {"missing required field", `{}`, nil, true},
    }
    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            got, err := ParseConfig(tt.input)
            if (err != nil) != tt.wantErr {
                t.Errorf("ParseConfig() error = %v, wantErr %v", err, tt.wantErr)
                return
            }
            if !reflect.DeepEqual(got, tt.want) {
                t.Errorf("ParseConfig() = %v, want %v", got, tt.want)
            }
        })
    }
}

Mock 生成

这个函数依赖了数据库,帮我生成 mock 和测试

wescode 会:

  1. 识别需要 mock 的依赖
  2. 生成接口定义(如果还没有)
  3. 生成 mock 实现
  4. 编写使用 mock 的测试

测试覆盖率分析

查看覆盖率

运行测试并分析覆盖率

wescode 会执行测试并解读覆盖率报告:

覆盖率提升

覆盖率只有 60%,帮我找出最值得补充测试的地方

wescode 会根据以下优先级推荐补充测试的位置:

  1. 关键业务路径:核心业务逻辑
  2. 高复杂度代码:复杂条件判断
  3. 错误处理路径:异常和错误分支
  4. 最近修改的代码:新增或变更的代码

覆盖率报告解读

帮我解读这个覆盖率报告,有哪些关键的缺口?

边界条件发现

自动发现边界条件

wescode 通过分析代码逻辑,自动发现容易遗漏的边界条件:

这个函数有哪些边界条件需要测试?

常见的边界条件类别:

类别示例
空值/零值nil、""、0、空数组
极限值整数最大值/最小值、超长字符串
类型边界Unicode 字符、特殊字符、换行符
并发条件竞态、死锁、饥饿
时间相关超时、时区、闰年、夏令时
资源限制内存不足、磁盘满、网络断开

模糊测试建议

这个解析器适合做模糊测试吗?帮我生成 fuzz 测试

示例输出(Go):

func FuzzParseInput(f *testing.F) {
    f.Add("normal input")
    f.Add("")
    f.Add("日本語テスト")
    f.Add(strings.Repeat("a", 10000))
    f.Fuzz(func(t *testing.T, input string) {
        result, err := ParseInput(input)
        if err == nil && result == nil {
            t.Error("nil result without error")
        }
    })
}

TDD 工作流

测试先行开发

wescode 支持 TDD(测试驱动开发)工作流:

我要实现一个用户注册功能,先帮我写测试

TDD 流程:

  1. Red:AI 生成失败的测试用例

    生成用户注册功能的测试用例,先不写实现
    
  2. Green:根据测试编写最小实现

    现在帮我写最小的实现代码让测试通过
    
  3. Refactor:在测试保护下重构

    测试都通过了,帮我重构一下让代码更整洁
    

增量 TDD

对于复杂功能,wescode 支持增量 TDD:

用户注册功能需要:
1. 验证邮箱格式
2. 检查用户名唯一性
3. 密码强度校验
4. 发送验证邮件

帮我从第一个需求开始,逐步 TDD

wescode 会一步步引导你:

  1. 先写邮箱验证的测试 → 实现 → 重构
  2. 再写用户名唯一性的测试 → 实现 → 重构
  3. 依此类推

测试框架集成

自动检测框架

wescode 会自动检测项目使用的测试框架:

测试运行

在聊天面板中直接运行测试:

运行这个文件的测试
只运行和我这次修改相关的测试
运行所有失败的测试

测试命令通过 wescode 内置终端执行:

测试配置

wescode 能帮你配置测试环境:

帮我配置 Jest,让它支持 TypeScript 和路径别名
配置 Go 的测试,使用 testify 和 mockery

集成测试

为这个 API 端点生成集成测试

wescode 会生成包含以下内容的集成测试:


最佳实践

测试命名

wescode 遵循测试命名最佳实践:

测试组织

帮我把这些测试按功能分组整理

推荐的测试组织方式:

tests/
├── unit/            # 单元测试
├── integration/     # 集成测试
├── e2e/             # 端到端测试
├── fixtures/        # 测试数据
└── helpers/         # 测试工具函数

测试数据管理

帮我为这些测试创建合适的测试 fixtures

wescode 会根据数据模型生成合理的测试数据。


注意事项


相关文档