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

Comment exécuter des tests Go de manière séquentielle pour plusieurs packages afin d'éviter les conflits ?

Patricia Arquette
Libérer: 2024-11-04 06:15:29
original
178 Les gens l'ont consulté

How to Run Go Tests Sequentially for Multiple Packages to Avoid Contention?

Go : exécution simultanée de tests pour plusieurs packages : résolution de conflits

Lors du test de plusieurs packages dans un sous-répertoire, l'exécution de tests individuels avec go test réussit . Cependant, les tentatives d'exécution simultanée de tous les tests à l'aide de go test ./... entraînent des échecs. Le problème provient de conflits potentiels lors de l'accès à des ressources communes, telles que des bases de données partagées.

Les variables globales utilisées dans des fichiers de test individuels peuvent créer des conflits si plusieurs tests fonctionnent simultanément sur la même base de données. Pour éviter cela, envisagez d'utiliser l'indicateur -parallel 1. Cela impose l'exécution séquentielle des tests au sein de chaque package.

Malgré l'utilisation de -parallel 1, les tests peuvent toujours échouer en raison de conflits. Cela suggère que les tests de différents packages s'exécutent simultanément. Pour éliminer toute possibilité de parallélisme entre les packages, une solution de contournement consiste à exécuter manuellement les tests à l'aide d'un script bash ou d'un alias. La séquence de commandes suivante permet d'y parvenir :

find . -name '*.go' -printf '%h\n' | sort -u | xargs -n1 -P1 go test
Copier après la connexion

Cette commande répertorie les sous-répertoires uniques contenant des fichiers *.go et exécute le test go sur chaque sous-répertoire de manière séquentielle.

Comme alternative, le script shell suivant ou l'alias peut être utilisé :

function gotest(){   find  -name '*.go' -printf '%h\n' | sort -u | xargs -n1 -P1 go test; }
Copier après la connexion

En exécutant gotest ., tous les tests du répertoire courant peuvent être exécutés séquentiellement.

Bien que ce ne soit pas aussi simple que go test ./..., ceci Cette solution de contournement garantit que les tests sont exécutés de manière séquentielle sur tous les packages, résolvant ainsi tout problème de conflit résultant de l'exécution de tests en parallèle.

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:php.cn
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
Derniers articles par auteur
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!