Maison >développement back-end >Golang >Pouvez-vous appeler des fonctions de test Go à partir de fichiers non-test ?
Appel de fonctions de test à partir de fichiers non-test
Dans Go, les tests reposent sur des conventions et des méthodologies spécifiques. L'une de ces conventions est que les tests doivent être séparés dans leurs propres fichiers de test, qui doivent se terminer par le suffixe "_test.go".
Les fonctions de test peuvent-elles être appelées à partir de fichiers non-test ?
Réponse courte : Non.
Contrairement à votre question, les fonctions de test ne peuvent pas être directement invoquées à partir de fichiers Go non-test. Cette séparation garantit que les tests restent distincts et indépendants du code testé.
Modèles de test dans Go
Go utilise principalement deux types de tests unitaires :
Exemple
Considérez l'"exemple" de package suivant avec une "Somme" exportée. fonction et une fonction "ajouter" non exportée :
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 }
Test en boîte noire (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() } } }
Test en boîte blanche (example_internal_test.go) :
package example_test 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 conclusion, appeler des fonctions de test à partir de fichiers non-test viole les principes des tests Go. Des packages de tests distincts doivent être utilisés à des fins de tests unitaires, en respectant le flux de travail et les conventions établies.
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!