新增 --include-tests 命令行标志,让 devgen 在生成代码的同时自动生成对应的测试文件。
devgen --include-tests ./...genkit 框架变更:
Options新增IncludeTests字段Generator新增IncludeTests()方法,供工具查询是否需要生成测试文件
enumgen 生成的测试文件 (*_enum_test.go):
Test<Type>_IsValid- 测试所有枚举值的有效性Test<Type>_String- 测试 String() 方法(如启用)Test<Type>Enums_List- 验证 List() 返回的枚举值列表Test<Type>Enums_Names- 验证 Names() 返回的名称列表Test<Type>Enums_Name- 测试 Name() 方法Test<Type>Enums_ContainsName- 测试 ContainsName() 方法- JSON/Text/SQL 序列化测试(如启用对应选项)
validategen 生成的测试文件 (*_validate_test.go):
- 为每个验证类型生成表驱动测试
- 自动生成有效和无效的测试用例
- 支持
@required、@gt、@lt、@gte、@lte、@email、@url等规则的测试
validategen 内部重构:
- 将
Validate()方法拆分为三部分:_validate()- 字段级验证(不含@method)_validateMethod()- 仅@method验证Validate()- 组合调用上述方法 +postValidate()
- 这种拆分便于单独测试字段验证逻辑,无需构造嵌套类型
当在 AI IDE(如 CodeBuddy)中打开 Go 项目时,扩展会询问是否生成 .codebuddy/rules/ 文件:
- 生成 - 本次生成
- 始终生成 - 保存到工作区设置,以后自动生成
- 不再提示 - 保存到工作区设置,不再询问
配置项:devgen.rules.autoGenerate(可选值:ask、always、never)
validategen 生成的 duration 比较代码现在使用 time.Duration 常量,更易读:
// 之前
if d < 1000000000 { // 1s
return errors.New("...")
}
// 现在
if d < 1*time.Second {
return errors.New("...")
}- 新增
generatetarget,运行go run ./cmd/devgen --include-tests ./... alltarget 现在包含generate步骤:tidy → generate → lint → test → buildtesttarget 添加--keep-going参数,测试失败时继续运行其他测试
# 之前
Loaded plugin: markgen
# 现在
📂 [LOAD] Loaded 1 plugin(s)
• 'markgen'