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
- Cada subtest paralelo debe ser independiente.
- El padre termina solo cuando terminan sus hijos paralelos.
- El estado compartido pide un candado, o el flag -race lo dirá.
Palabras clave y builtins usados aquí
forfuncifintrangereturnstringstruct
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.
Paso 1 de 2 en Ejecutarlas; paso 11 de 13 en Pruebas.