Dans Go, les tests unitaires sont généralement exécutés à l'aide de go test, qui identifie et exécute les fonctions de test marquées de le paramètre testing.T. Cependant, la question se pose : peut-on invoquer une fonction de test à partir d'un fichier non-test pour lancer l'exécution du test ?
Malheureusement, la réponse est non. Le cadre de test de Go est conçu pour imposer une séparation entre le code de test et le code non-test. Les fonctions de test ne doivent être appelées qu'à partir des fichiers de test et les unités testées doivent être importées à partir du package approprié.
Go prend en charge deux modèles de test principaux :
Considérons un exemple de package nommé example avec une fonction utilitaire d'ajout et une somme exportée. fonction qui utilise la fonction d'ajout interne.
example.go : package avec des fonctions exportées et non exportées
<code class="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>
<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>
<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 conclusion, l'appel d'une fonction de test depuis l'extérieur d'un fichier de test n'est pas possible en raison de la séparation conçue entre le code de test et le code non-test. en Aller. Les tests unitaires doivent toujours être exécutés via la commande go test, garantissant la séparation des problèmes et empêchant l'exécution involontaire de code.
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!