probando una colección de funciones con reflexión en go
problema
unidad probando un conjunto de funciones con firmas similares y valores de retorno puede convertirse en repetitivos y cumbersome. Los enfoques tradicionales implican escribir pruebas individuales para cada función, lo que puede conducir a la duplicación de código. La reflexión ofrece una solución para agilizar este proceso.
usando reflexión
para aprovechar la reflexión en sus pruebas:
Code de ejemplo
var funcNames = []string{"Func1", "Func2", "Func3"}
func TestFunc(t *testing.T) {
stype := reflect.ValueOf(s)
for _, fname := range funcNames {
fmt.Println(fname)
sfunc := stype.MethodByName(fname)
ret := sfunc.Call([]reflect.Value{})
val := ret[0].Int()
if val nota: Si se especifica un nombre de función no válido, la prueba entrará en pánico. Para mitigar esto:
for _, fname := range funcNames {
defer func() {
if x := recover(); x != nil {
t.Error("TestFunc paniced for", fname, ": ", x)
}
}()
fmt.Println(fname)
}
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