2017-09-17 3 views
2

Je construis un référentiel de modèles de conception dans golang. Pour exécuter tous les tests, j'utilise ce script bash. Ça marche.go test dans la structure de dossiers complexes

#!/bin/bash 
go test creational/abstract_factory/*.go 
go test creational/builder/*.go 
go test creational/factory/*.go 
go test creational/pool/*.go 
go test creational/prototype/*.go 
go test creational/singleton/*.go 

Il fonctionne très bien:

prompt> ./runtests.sh 
ok  command-line-arguments 0.006s 
ok  command-line-arguments 0.006s 
ok  command-line-arguments 0.006s 
ok  command-line-arguments 0.006s 
ok  command-line-arguments 0.005s 
ok  command-line-arguments 0.006s 

Mais ... Si je tente d'envoyer plus répertoire pour go test je reçois ce message « les fichiers nommés doivent tous être dans un répertoire, ont créationnelle/piscine/et creational/factory/". C'est la raison pour laquelle j'ai créé ce script bash.

Est-il possible de tester tous les dossiers en une seule commande?

Répondre

3

Quel est le problème avec l'utilisation du ...? Modifier le répertoire à creational, puis

go test ./... 

Cela récursif à tous les sous-dossiers et exécuter des tests de tous les paquets trouvés. Pour plus de détails, voir Difference in output when calling go test with package; et How do you run `go test` when test files are within a module?

Remarque: à partir de la version 1.9, les packages des sous-dossiers vendor ne correspondent pas si ./... est utilisé. Source: Go 1.9 Release Notes - Vendor matching with ./.... Avant Go 1.9, go test ./... est également allé dans le sous-dossier vendor et a exécuté des tests de packages vendored.