Maison  >  Article  >  développement back-end  >  Comment réutiliser efficacement le code de test dans les packages importés ?

Comment réutiliser efficacement le code de test dans les packages importés ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-04 09:09:02130parcourir

How to Reuse Test Code in Imported Packages Effectively?

Test du code réutilisable dans les packages importés

Lorsque vous travaillez avec plusieurs packages et fichiers de test, il est courant de rencontrer le besoin de réutiliser les fonctions utilitaires de d'un test à l'autre. Considérez la hiérarchie de répertoires suivante :

/<br>|-- main.go // package main, un serveur HTTP qui accepte les requêtes et appelle les API C/U dans pkg1 pour terminer certaines tâches<br>|-- main_test.go // veut appeler veryfyTaskNumber dans pkg1_test<br>|-- pkg1 // package pkg1, API CRUD avec Retrieve&Delete non exportées pour des raisons de sécurité</p>
<pre class="brush:php;toolbar:false">|-- pkg1_test.go // contains a function verifyTaskNumber(*testing.T, taskName string, expectedNo int) which calls internal Retrieve function in pkg1

Dans ce scénario, main_test.go doit accéder à verifyTaskNumber() depuis pkg1_test.go, ce qui pose le défi suivant : Comment le code de test dans les packages importés peut-il être réutilisé efficacement ?

Deux approches courantes sont :

  1. Déplacement des fonctions vers le package importé : Cette méthode rend les fonctions disponibles pour tous les fichiers de test du projet. Cependant, les fonctions peuvent être incluses dans les binaires compilés, ce qui n'est pas souhaitable dans ce cas.
  2. Création d'un package de test d'utilitaire : Cette approche implique de déplacer les fonctions vers un package d'utilitaire de test distinct et en l'important dans les fichiers de test pertinents. L'inconvénient de cette solution est que les fonctions du package utilitaire peuvent s'appuyer sur des méthodes internes du package importé, qui peuvent ne pas être accessibles.

Une solution plus efficace consiste à enregistrer la sortie du package interne. fonction dans le package importé dans un fichier de support. Ce fichier peut ensuite être chargé lorsque la fonction correspondante dans le package utilitaire est appelée.

Par exemple, si pkg1 a une fonction Retrieve() non exportée, vous pouvez créer une fonction dans le package utilitaire qui charge le fichier de support et appelle Retrieve(). En utilisant cette approche, les fonctions du package utilitaire peuvent accéder aux méthodes internes du package importé sans compromettre la modularité ni créer d'artefacts.

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!

Déclaration:
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