probando escenarios de OS.Exit en la información de cobertura (coveralls.io/goveralls)
Enfoque modificado para una cobertura precisa
para abordar esta limitación, se propone un enfoque de prueba modificado. En lugar de revocar el binario, las pruebas se realizan modificando la función os.exit () o log.fatalf () para capturar códigos de salida o registros de errores.
modificado foo/bar.go:
paquete foo foo importar ( "FMT" "OS" ) var osexit = os.exit func crasher () { FMT.Println ("¡Va por llamas!") Osexit (1) }
package foo import ( "fmt" "os" ) var osExit = os.Exit func Crasher() { fmt.Println("Going down in flames!") osExit(1) }
paquete foo importar "prueba" FUNC TestCrasher (t *testing.t) { // Guardar la función actual y restaurar al final: Oldosexit: = Osexit Diferir func () {oSexit = Oldosexit} () var Got Got int myExit: = func (código int) { Got = Código } Osexit = myExit Crasher () Si exp: = 1; Got! = exp { T.errorf ("Código de salida esperado: %D, Got: %D", Exp, Got) } }
Este enfoque permite que las herramientas de cobertura rastreen con precisión la ejecución de OS.exit () y aseguren que los casos de prueba en los que las rutinas salgan con os.exit () están cubiertos en los resultados de la prueba.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) } }
conclusión
El enfoque modificado de las pruebas de prueba con exits y la información de cobertura de la actualización, proporcionando una solución completa para la información de la solución completa, proporcionando una solución completa para una solución completa para una solución completa para una solución completa para una solución completa para una solución completa para una solución completa para una solución completa para la información de las pruebas de prueba con el enfoque de las pruebas de exit con exits y la actualización de la actualización. OS.Exit () escenarios mientras mantiene informes de cobertura precisos.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3