Testando para pânico em go
Ao gravar testes em go, a verificação de pânico pode ser uma técnica útil. No entanto, diferentemente do Java, o GO não possui sintaxe explícita para lidar com o pânico seletivamente. adiar func () { se r: = recuperar (); r! = nil { fmt.println ("recuperado em f", r) } } () OtherFunctionThatpanics () t.errorf ("O código não entrou em pânico") }
Este código tenta se recuperar de qualquer pânico em outras funções, usando a função Recuperação. No entanto, pode ser um desafio determinar se a função entrou em pânico ou se não ocorreu pânico. Isso pode ser conseguido invertendo a lógica e garantindo que ocorra um pânico se esperado:
func f(t *testing.T) { defer func() { if r := recover(); r != nil { fmt.Println("Recovered in f", r) } }() OtherFunctionThatPanics() t.Errorf("The code did not panic") }
Além disso, estruturas de testes mais avançadas, como Ginkgo ou Gomega, fornecem partidas embutidas para afirmar a ocorrência de pânico:
espera (outros FunctionThatpanics) .to (panic) pode criar uma função genérica para afirmar pânico:
func assertpanic (t *testing.t, f func ()) { adiar func () { se r: = recuperar (); r == nil { t.errorf ("O código não entrou em pânico") } } () f () }Esta função pode ser usada da seguinte Assertpanic (T, OtherFunctionthatpanics) }
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3