"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo se pueden probar funciones no exportadas en Go?

¿Cómo se pueden probar funciones no exportadas en Go?

Publicado el 2024-11-06
Navegar:640

How Can You Test Unexported Functions in Go?

Llamar funciones de prueba desde archivos Go que no son de prueba

En Go, las funciones de prueba no deben llamarse desde el propio código. En cambio, las pruebas unitarias deben ejecutarse utilizando el comando go test .

Pruebas de caja blanca y negra

Go admite dos tipos de pruebas unitarias: de caja negra y de caja blanca. .

Pruebas de caja negra prueba las funciones exportadas desde fuera del paquete, simulando cómo los paquetes externos interactuarán con él.

Prueba de caja blanca prueba funciones no exportadas desde el propio paquete.

Ejemplo

Considere un paquete llamado ejemplo con una función exportada Sum y una función de utilidad no exportada add.

// example.go
package example

func Sum(nums ...int) int {
    sum := 0
    for _, num := range nums {
        sum = add(sum, num)
    }
    return sum
}

func add(a, b int) int {
    return a   b
}

Pruebas de caja negra (en example_test.go):

package example_test

import (
    "testing"

    "example"
)

func TestSum(t *testing.T) {
    tests := []struct {
        nums []int
        sum  int
    }{
        {nums: []int{1, 2, 3}, sum: 6},
        {nums: []int{2, 3, 4}, sum: 9},
    }

    for _, test := range tests {
        s := example.Sum(test.nums...)
        if s != test.sum {
            t.FailNow()
        }
    }
}

Prueba de caja blanca (en example_internal_test.go):

package example

import "testing"

func TestAdd(t *testing.T) {
    tests := []struct {
        a   int
        b   int
        sum int
    }{
        {a: 1, b: 2, sum: 3},
        {a: 3, b: 4, sum: 7},
    }

    for _, test := range tests {
        s := add(test.a, test.b)
        if s != test.sum {
            t.FailNow()
        }
    }
}

En resumen, las pruebas unitarias deben ejecutarse usando el comando go test y nunca llamarse directamente desde el código. Las pruebas de caja blanca y negra brindan diferentes niveles de acceso a la implementación del paquete para fines de prueba.

Último tutorial Más>

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