Maison >développement back-end >Golang >Comment importer du code de test d'un module à un autre sans l'exposer au code de production ?
éditeur php Yuzi En développement logiciel, nous avons souvent besoin de tester le code. Cependant, nous ne souhaitons pas exposer le code de test à l'environnement de production pour éviter toute confusion inutile. Alors, comment importer du code de test d’un module à un autre sans l’exposer au code de production ? C'est un problème courant, mais il existe des solutions. Cet article vous présentera une méthode efficace pour atteindre cet objectif, en rendant votre code plus sécurisé et plus fiable.
TLDR : j'ai placé une structure TestLogger dans logutils/test-logger_test.go et j'ai essayé de la référencer dans identifier/login_tests.go. Lors de la création de tests pour le module d'authentification, le compilateur se plaint que TestLogger n'est pas déclaré. La seule solution de contournement consiste à renommer test-logger_test.go en test-logger.go, mais cela risque de faire référence à TestLogger dans le code de production.
Lors de l'exécution de tests go, golang ne semble pas importer le code de test (code déclaré dans les fichiers avec le suffixe _test.go) d'un module à un autre. Est-ce que je fais quelque chose de mal ou est-ce ainsi que Golang est conçu ? y-a-t'il une solution?
Exemple simple pour illustrer :
J'ai un module "bibliothèque" (appelons-le il logutils) et un module "application" (appelons-le "authentification"). Le module logutils a ses propres tests couvrant toutes les fonctionnalités spécifiques à l'implémentation des enregistreurs (par exemple FileLogger, HttpLogger) et tout va bien.
Le module logutils déclare également un TestLogger qui peut être utilisé par les modules « client » (tels que « authentification ») pour garantir qu'ils enregistrent tout correctement sans avoir besoin de configurer la journalisation de fichier ou http. En gros, il implémente simplement l'interface Logger mais enregistre simplement tout dans un tampon qui peut être vérifié à la fin du test.Ainsi, le module "authentification" peut déclarer son propre fichier _test.go qui instancie TestLogger et tout fonctionne à merveille.
Ce qui me dérange, c'est que TestLogger doit être déclaré dans le fichier de production habituel (logutils/test-logger.go) et non dans le fichier de test (logutils/test-logger_test.go), sinon le test d'authentification se plaindra que TestLogger est non défini . Mais en faisant cela, rien n'empêche TestLogger d'être référencé/utilisé dans le code de production.
Ce que je veux, c'est que le code de n'importe quel fichier logutils _test.go puisse être importé dans n'importe quel fichier d'authentification _test.go (mais pas dans un fichier .go de production).
Des idées/suggestions ?
Edit : Correction d'une faute de frappe
Vous ne pouvez pas avoir ça. Si simple. (Il n'existe pas de "fichier .go de production". Le code de test n'est pas "de non-production".)
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!