


Qu'est-ce que les tests en Go et comment écrire des tests unitaires?
Les tests unitaires de GO sont mis en œuvre via le package de tests intégré, et les développeurs doivent uniquement suivre la spécification de dénomination pour écrire et exécuter des tests. Les étapes spécifiques incluent: 1. Créez un fichier de test se terminant avec _test.go; 2. Écrivez une fonction de test en commençant par le test; 3. Signaler une erreur avec T.Errorf (); 4. Exécutez le test à l'aide de la commande go test; 5. Testez plusieurs cas d'utilisation avec le pilote de table; 6. Exécutez un test spécifique à l'aide de l'indicateur -RUN et obtenez une sortie détaillée à l'aide de l'indicateur -v. Par exemple, lors du test de la fonction ADD, vous pouvez écrire la fonction TestAdd dans math_test.go et définir plusieurs ensembles d'entrée et de sortie via la structure de vérification. De plus, vous pouvez exécuter le test spécifié via GO Test -Run TestAdd, ou afficher les informations de journal détaillées via GO Test -V.
Testing in Go est une fonctionnalité intégrée qui permet aux développeurs d'écrire et d'exécuter des tests directement à côté de leur code, sans avoir besoin de bibliothèques tierces. Les tests unitaires dans GO sont simples - il utilise le package testing
et suivi une simple convention de dénomination pour les fonctions de test.
Comment rédiger un test unitaire de base
Pour écrire un test unitaire en Go, vous créez une fonction dans un fichier _test.go
. Le nom de la fonction doit commencer par Test
, suivi du nom de la fonction ou de la méthode testée.
Par exemple, si vous avez une fonction appelée Add
dans un fichier nommé math.go
, vous rédigeriez son test dans un fichier nommé math_test.go
. Voici à quoi pourrait ressembler un test de base:
package principal Importer des "tests" func testadd (t * test.t) { Résultat: = ajouter (2, 3) attendu: = 5 Si résultat! = attendu { t.errorf ("attendu% d, got% d", attendu, résultat) } }
- Assurez-vous que vos fichiers de test se terminent dans
_test.go
- Importer le package
testing
- Utilisez
t.Errorf()
(ou méthodes similaires) pour signaler les défaillances
Lorsque vous êtes prêt à exécuter le test, utilisez la ligne de commande:
faire un test
Si tout passe, vous verrez un message PASS
. Si quelque chose échoue, GO vous montrera exactement quel test a échoué et pourquoi.
Tests basés sur la table: un moyen plus propre de tester plusieurs cas
Les développeurs GO utilisent souvent des tests basés sur la table pour vérifier plusieurs combinaisons d'entrée-sortie dans une seule fonction de test. Cela maintient les tests concis et faciles à entretenir.
Voici un exemple en utilisant la même fonction Add
:
func testadd (t * test.t) { Tests: = [] struct { A, B int Attendez-vous à Int } { {2, 3, 5}, {0, 0, 0}, {-1, 1, 0}, {100, 200, 300}, } pour _, TT: = Tests de plage { Résultat: = add (tt.a, tt.b) Si résultat! = tt.expect { T.Errorf ("Add (% d,% d): attendu% d, got% d", tt.a, tt.b, tt.expect, résultat) } } }
Cette approche facilite:
- Ajoutez plus de cas de test rapidement
- Voir ce qui est testé en un coup d'œil
- Réutiliser la même logique d'affirmation dans tous les cas
De nombreux projets GO préfèrent ce style car il réduit la duplication et améliore la lecture.
Exécuter des tests spécifiques et obtenir plus de sortie
Si vous avez beaucoup de tests et que vous souhaitez en exécuter un, vous pouvez utiliser le drapeau -run
suivi d'une expression régulière correspondant au nom du test:
aller test -run testadd
Pour obtenir une sortie plus détaillée, y compris les journaux de t.Log()
ou fmt.Println()
, ajoutez l'indicateur -v
:
aller tester -v
Vous pouvez également combiner des drapeaux:
aller test -v -run testadd
Ces options sont pratiques lors du débogage des tests d'échec ou lorsque vous travaillez sur une partie spécifique de votre base de code.
Ce sont les bases de l'écriture et de l'exécution de tests en Go. Ce n'est pas compliqué, mais il y a quelques petites règles à retenir, comme les conventions de dénomination et où placer vos fichiers de test.
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

En utilisant la journalisation structurée, en ajoutant du contexte, en contrôlant les niveaux de journal, en évitant les données sensibles à la journalisation, en utilisant des noms de champ cohérents, en enregistrant correctement les erreurs, en prenant en compte les performances, en surveillant les journaux et des configurations unificatrices de manière centralisée sont les meilleures pratiques pour obtenir une journalisation efficace. Tout d'abord, les journaux structurés au format JSON (comme l'utilisation d'Uber-GO / ZAP ou de RS / Zerolog) facilitent l'analyse de la machine et l'intégration de wapitis, de la forme de données et d'autres outils; Deuxièmement, la traçabilité du journal est améliorée en demandant des informations de contexte telles que l'ID et l'ID utilisateur, et peut être injectée via Context.Context ou HTTP Middleware; Troisièmement, utilisez le débogage, les informations, les avertissements, les niveaux d'erreur raisonnablement et fonctionnent via des variables environnementales.

Usesignal.notify () TolistenForsigint / SigterandTriggersHutdown; 2.RunthehttpServerinagoroutineandblockuntilasignalisreceived; 3.CallServer.Shutdown () avec un aontextTimeoutTostopaccepingEptureNewrequestSallowine-FLIMESTOSTOCLEM

UseTime.now () togetTheCurrentLocaltimeAsatime.TimeObject; 2.FormatTheTimeusingtheformatmethodwithlayoutslik "2006-01-0215: 04: 05"; 3.GetUtCtimeByCallingUtc () onTheResultime.now (); 4.xtractconntslikeliseyyar, mois, DayUsiTheThoDs

Les données XML d'analyse sont très simples en Go, utilisez simplement le package d'encodage / XML intégré. 1. Définissez une structure avec la balise XML pour mapper des éléments et des attributs XML, tels que XML: "Nom" Eléments enfants correspondants, XML: "Contact> Email" Père la nidification, XML: "ID, AttR" lit Attributs; 2. Utilisez XML.unmarshal pour analyser les chaînes XML en structures; 3. Pour les fichiers, utilisez OS.Open pour les ouvrir et les décoder via XML.NewDecoder, qui convient au traitement en streaming des fichiers volumineux; 4. Lors du traitement des éléments en double, dans la structure

Dans GO, la création et l'utilisation de types d'erreurs personnalisés peuvent améliorer l'expressivité et la débogabilité de la gestion des erreurs. La réponse est de créer une erreur personnalisée en définissant une structure qui implémente la méthode Error (). Par exemple, ValidationError contient des champs de champ et de messages et renvoie les informations d'erreur formatées. L'erreur peut ensuite être renvoyée dans la fonction, détectant des types d'erreur spécifiques via des assertions ou des erreurs de type. Vous pouvez également ajouter des méthodes comportementales telles que les erreurs ISCRITIQUES à personnalisées, qui conviennent aux scénarios qui nécessitent des données structurées, un traitement différencié, une exportation de bibliothèque ou une intégration API. Dans des cas simples, des erreurs.

L'analyse des performances du code GO peut être implémentée via l'outil PPROF intégré. Tout d'abord, importez le point de terminaison de débogage pour activer le \ _ "net / http / pprof"; 1. Pour les services HTTP, démarrez l'interface PPROF de LocalHost: 6060 dans le programme; 2. Utilisez gotoolpprof http: // localhost: 6060 / debug / pprof / profil? Seconds = 30 pour collecter 30 secondes de données de performance CPU; 3. Analyser l'allocation de la mémoire via Gotoolpprof http: // localhost: 6060 / debug / pprof / tas; 4. Activer la course

Évitez-vous se moquer du fait de l'appartenance de laARtiale et de la sieste-interaction avec les impléments de la surlance-imitations, moqueurs

Pour créer une API sans serveur, vous devez configurer un environnement GO et installer GoogleCloudsdk, puis écrire une fonction HTTP pour gérer la demande et enfin déployer sur des fonctions de cloud via GCloudCLI. 1. Installez Go1.18 et GoogleCloudsdk et configurez le projet; 2. Créer des modules GO et écrire des fonctions de traitement HTTP, prendre en charge les méthodes de GET et POST, Processez l'entrée JSON et la réponse de retour; 3. Simplifiez le code et conservez uniquement la fonction de gestionnaire, supprimez la logique du serveur local; 4. Utilisez la commande gcloud pour déployer la fonction, spécifiez la méthode d'exécution, de point d'entrée et de déclenchement; 5. Testez les interfaces Get et Post de l'API, vérifiez le retour
