一键导入
go-test-standards
Golang 单元测试规范与最佳实践指南
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Golang 单元测试规范与最佳实践指南
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
代码审核辅助工具,支持本地 Git 库和 Gerrit Review。支持审核当前最新 commit、暂存的修改、未暂存的修改等,也支持 Golang、Qt/C++、Ansible 等多语言的 Gerrit Code Review。提供"必须修复/建议修复/可选改进"三级分级审核,生成 Markdown 报告。
Structured remote server troubleshooting workflow that follows investigation-only practices until user approval. Use when Claude needs to diagnose issues on remote SSH-accessible servers including k8s clusters, bare metal, and containerized services. Covers service/port access problems, configuration issues, service startup failures, and performance/resource issues. Emphasizes creating helper scripts on remote server, obtaining user approval before fixes, script-based repairs, and generating comprehensive analysis reports.
提供 GoFrame 框架的官方最佳实践指导,包括项目结构、分层架构、配置管理、数据校验、数据库操作、中间件开发等开发规范
基于 SOC 职业分类
| name | go-test-standards |
| description | Golang 单元测试规范与最佳实践指南 |
| category | testing |
| tags | ["golang","go-test-standards","unit-test","ginkgo","gomega","testing"] |
| 阶段 | 说明 |
|---|---|
| Setup | 准备测试所需的数据和环境 |
| Exercise | 执行被测试的代码 |
| Verify | 验证执行结果是否符合预期 |
| Teardown | 清理测试环境和数据 |
Go 项目必须使用以下工具:
注意事项:
Ω 别名。suite_test.go。abc,则测试文件属于 abc_test 包。package db_test
import (
"fmt"
"reflect"
"testing"
_ "github.com/go-sql-driver/mysql"
"github.com/jinzhu/gorm"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
dockertest "github.com/ory/dockertest/v3"
"github.com/ory/dockertest/v3/docker"
)
const (
dbName = "test"
dbPwd = "test"
)
func TestDB(t *testing.T) {
RegisterFailHandler(Fail)
RunSpecs(t, "Db Test Suite", Label("repo", "store/db"))
}
var (
Db *gorm.DB
cleanupDocker func()
)
var _ = BeforeSuite(func() {
Db, cleanupDocker = setupGormWithDocker()
})
var _ = AfterSuite(func() {
cleanupDocker()
})
var _ = BeforeEach(func() {
Except(cleanDatabase(Db, dbName)).To(Succeed())
})
func setupGormWithDocker() (*gorm.DB, func()) {
pool, err := dockertest.NewPool("")
chk(err)
runDockerOpt := &dockertest.RunOptions{
Repository: "hub.deepin.com/library/mariadb",
Tag: "10.3.35",
Env: []string{"MARIADB_DATABASE=" + dbName, "MARIADB_ROOT_PASSWORD=" + dbPwd},
}
fnConfig := func(config *docker.HostConfig) {
config.AutoRemove = true
config.RestartPolicy = docker.NeverRestart()
}
resource, err := pool.RunWithOptions(runDockerOpt, fnConfig)
chk(err)
fnCleanup := func() {
err := resource.Close()
chk(err)
}
dsn := fmt.Sprintf("root:%s@tcp(localhost:%s)/%s?charset=utf8&parseTime=True&loc=Local",
dbPwd,
resource.GetPort("3306/tcp"),
dbName,
)
var gdb *gorm.DB
err = pool.Retry(func() error {
gdb, err = gorm.Open("mysql", dsn)
if err != nil {
return err
}
return gdb.DB().Ping()
})
chk(err)
return gdb, fnCleanup
}
func cleanDatabase(db *gorm.DB, dbName string) error {
// 删除数据库内的所有对象,比如数据表,以达到重置数据库的作用
}
func chk(err error) {
if err != nil {
panic(err)
}
}
| 工具 | 说明 |
|---|---|
| ginkgo | Expressive BDD testing framework with Gomega matchers |
| gomega | Ginkgo's Preferred Matcher Library |
| biloba | Stable, performant, automated browser testing for Ginkgo |
| chromedp | Drive Chrome browsers via DevTools Protocol |
| 工具 | 说明 |
|---|---|
| iotest | Std Package - Readers and Writers for testing |
| httptest | Std Package - HTTP testing utilities |
| dockertest | Run integration tests with Docker containers |
| testcontainers-go | Programmatically manage Docker containers |
| 工具 | 类型 | 说明 |
|---|---|---|
| moq | Stub | Generate interface mocks for testing |
| gomonkey | Monkey | Monkey patching library for unit testing |
| mock | Mock | Go mocking framework with code generation |