Maison > développement back-end > Golang > le corps du texte

Comment importer du code de test d'un module à un autre sans l'exposer au code de production ?

PHPz
Libérer: 2024-02-09 21:00:10
avant
591 Les gens l'ont consulté

Comment importer du code de test dun module à un autre sans lexposer 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.

Contenu de la question

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

Solution de contournement

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!