Maison > développement back-end > Golang > Comment puis-je tester avec précision « os.Exit() » dans Go et maintenir la couverture du code ?

Comment puis-je tester avec précision « os.Exit() » dans Go et maintenir la couverture du code ?

Barbara Streisand
Libérer: 2024-12-25 10:19:09
original
253 Les gens l'ont consulté

How Can I Accurately Test `os.Exit()` in Go and Maintain Code Coverage?

Test des scénarios os.Exit dans Go avec informations de couverture (Coveralls.io/Goveralls)

Cette question aborde les défis liés aux tests de routines qui utilisez os.Exit() dans Go tout en garantissant que les informations de couverture sont rapportées avec précision. La principale préoccupation est que les méthodes existantes, telles que la réinvocation du binaire, ne parviennent pas à suivre la couverture.

Approche modifiée pour une couverture précise

Pour remédier à cette limitation, un test modifié approche est proposée. Plutôt que de réinvoquer le binaire, les tests sont effectués en modifiant la fonction os.Exit() ou log.Fatalf() pour capturer les codes de sortie ou les journaux d'erreurs.

Modifié foo/bar.go :

package foo

import (
    "fmt"
    "os"
)

var osExit = os.Exit

func Crasher() {
    fmt.Println("Going down in flames!")
    osExit(1)
}
Copier après la connexion

Code de test modifié : foo/bar_test.go

package foo

import "testing"

func TestCrasher(t *testing.T) {
    // Save current function and restore at the end:
    oldOsExit := osExit
    defer func() { osExit = oldOsExit }()

    var got int
    myExit := func(code int) {
        got = code
    }

    osExit = myExit
    Crasher()
    if exp := 1; got != exp {
        t.Errorf("Expected exit code: %d, got: %d", exp, got)
    }
}
Copier après la connexion

Cette approche permet aux outils de couverture de suivre avec précision l'exécution de os.Exit() et garantit que les cas de test où les routines se terminent avec os.Exit() sont couverts dans les résultats des tests.

Conclusion

L'approche modifiée combine efficacement les tests avec les codes de sortie et les informations de couverture, fournissant une solution complète pour tester avec précision les scénarios os.Exit() tout en maintenant des rapports de couverture précis.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal