Maison > Article > développement back-end > Comment tester le comportement de « os.Exit » dans les suites de tests Go ?
Test des scénarios os.Exit dans Go
Lors du test des fonctions Go qui invoquent os.Exit(), une approche unique est nécessaire pour éviter ces sorties d'interférer avec les tests ultérieurs.
Pour résoudre ce problème, considérez ce qui suit code :
func doomed() { os.Exit(1) }
Comment tester correctement le comportement de os.Exit à l'aide de Go Test
Pour tester le comportement de sortie de cette fonction, nous pouvons exploiter une technique décrite par Andrew Gerrand, membre principal de l'équipe Go :
Exemple de code de test :
package main import ( "fmt" "os" "os/exec" "testing" ) func Crasher() { fmt.Println("Going down in flames!") os.Exit(1) } func TestCrasher(t *testing.T) { if os.Getenv("BE_CRASHER") == "1" { Crasher() return } cmd := exec.Command(os.Args[0], "-test.run=TestCrasher") cmd.Env = append(os.Environ(), "BE_CRASHER=1") err := cmd.Run() if e, ok := err.(*exec.ExitError); ok && !e.Success() { return } t.Fatalf("process ran with err %v, want exit status 1", err) }
En séparant les processus de test et en utilisant des variables d'environnement pour contrôler l'exécution, vous pouvez tester efficacement les scénarios os.Exit dans vos suites de tests Go sans affecter les autres tests.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!