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
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.
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.
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