typestar

Subtests en paralelo en Go

t.Parallel pausa un subtest hasta que los demás arrancan, y luego corren juntos.

func Double(n int) int { return n * 2 }

func TestDoubleParallel(t *testing.T) {
    cases := []struct {
        name string
        in   int
        want int
    }{
        {"one", 1, 2},
        {"two", 2, 4},
        {"three", 3, 6},
    }

    for _, c := range cases {
        t.Run(c.name, func(t *testing.T) {
            t.Parallel()
            if got := Double(c.in); got != c.want {
                t.Errorf("Double(%d) = %d, want %d", c.in, got, c.want)
            }
        })
    }
}

Cómo funciona

  1. Cada subtest paralelo debe ser independiente.
  2. El padre termina solo cuando terminan sus hijos paralelos.
  3. El estado compartido pide un candado, o el flag -race lo dirá.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
22
Caracteres a escribir
362
Tokens
129
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 74 segundos.

Escribe este fragmento

Paso 1 de 2 en Ejecutarlas; paso 11 de 13 en Pruebas.

← Anterior Siguiente →