Agent skill

go-testing-subtests

Subtest patterns with t.Run

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/testing/go-testing-subtests

SKILL.md

Subtests with t.Run

Use t.Run to group related tests and enable selective execution.

CORRECT

go
func Test_User_Validation(t *testing.T) {
    t.Run("valid email", func(t *testing.T) {
        user := User{Email: "test@example.com"}
        if err := user.Validate(); err != nil {
            t.Errorf("expected valid, got error: %v", err)
        }
    })

    t.Run("invalid email", func(t *testing.T) {
        user := User{Email: "invalid"}
        if err := user.Validate(); err == nil {
            t.Error("expected error, got nil")
        }
    })

    t.Run("empty email", func(t *testing.T) {
        user := User{Email: ""}
        if err := user.Validate(); err == nil {
            t.Error("expected error, got nil")
        }
    })
}

Run specific subtest:

bash
go test -run Test_User_Validation/invalid_email

Why:

  • Logical grouping of related tests
  • Can run subtests individually
  • Clean test output with hierarchy
  • Failures don't stop other subtests

WRONG

go
func Test_User_ValidEmail(t *testing.T) { /* ... */ }
func Test_User_InvalidEmail(t *testing.T) { /* ... */ }
func Test_User_EmptyEmail(t *testing.T) { /* ... */ }

Problems:

  • No grouping relationship
  • Harder to run related tests together
  • More verbose test names

Didn't find tool you were looking for?

Be as detailed as possible for better results