Maison >développement back-end >Golang >Comment tester les fonctions non exportées dans Go ?
Dans Go, les fonctions de test ne doivent pas être appelées depuis le 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 : la boîte noire et la boîte blanche.
Tests en boîte noire teste les fonctions exportées depuis l'extérieur du package, en simulant la manière dont les packages externes interagiront avec lui.
Tests en boîte blanche teste les fonctions non exportées depuis le package lui-même.
Considérons un package appelé example avec une fonction exportée Sum et une fonction utilitaire non exportée add.
<code class="go">// 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 }</code>
Test en boîte noire (dans example_test.go) :
<code class="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() } } }</code>
Tests en boîte blanche (dans example_internal_test.go) :
<code class="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() } } }</code>
En résumé, les tests unitaires doivent être exécutés à l'aide de la commande go test, et jamais appelé 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.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!