Dans Go, les fonctions de test ne doivent pas être appelées à partir du code lui-même. Au lieu de cela, les tests unitaires sont destinés à être exécutés à l'aide de la commande go test
Go prend en charge deux types de tests unitaires : boîte noire et boîte blanche. .
Tests en boîte noire testent les fonctions exportées depuis l'extérieur du package, simulant la manière dont les packages externes interagiront avec celui-ci.
Tests en boîte blanche teste les fonctions non exportées à partir du package lui-même.
Considérons un package appelé example avec une fonction exportée Sum et une fonction utilitaire non exportée 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
}
Tests en boîte noire (dans 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()
}
}
}
Tests en boîte blanche (dans 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 résumé, les tests unitaires doivent être exécutés à l'aide de la commande go test et ne jamais être appelés directement depuis le code. Les tests en boîte noire et blanche offrent différents niveaux d'accès à l'implémentation du package à des fins de test.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3