web-dev-qa-db-fra.com

Forcer le nouveau test ou désactiver la mise en cache du test

Problème:

Lorsque je lance le même test deux fois, la deuxième exécution n'est pas terminée. Les résultats sont ceux en cache de la première exécution.

PASS    
ok      tester/apitests    (cached)

Liens

J'ai déjà vérifié https://golang.org/cmd/go/#hdr-Testing_flags mais il n'y a pas d'indicateur cli à cette fin.

Question:

Existe-t-il une possibilité de forcer go test à toujours exécuter le test et ne pas mettre en cache les résultats du test?

46
Simon Frey

Il y a quelques options comme décrit dans le test des drapeaux :

  • go clean -testcache: expire tous les résultats de test
  • utilisez des indicateurs non cachables sur votre série de tests. La manière idiomatique est d'utiliser -count=1

Cela dit, toute modification de votre code ou de votre code de test invalidera les résultats du test mis en cache (la logique est également étendue lorsque vous utilisez des fichiers locaux ou des variables d’environnement). Il n’est donc pas nécessaire d’invalider manuellement le cache de test.

82
Marc

Il y a aussi GOCACHE=off mentionné ici .

15
soltysh

La façon dont j'ai résolu ce problème (j'utilise le code Visual Studio sur macOS):

Code> Préférences> Paramètres

Cliquez sur ... à droite de la page de configuration.

Cliquez Open settings.json

Soit:

  1. Ajoutez l'extrait suivant à votre fichier settings.json.

    "go.testEnvVars": {
        "GOCACHE": "off"
    }
    
  2. Modifiez la valeur de go.testEnvVars pour inclure les éléments suivants: "GOCACHE": "off"
6
distortedsignal

En Go11, je ne pouvais pas désactiver le cache en utilisant GOCACHE avec des modules, j'ai utilisé -count=1 à la place:

go test -count=1

Avant Go11:

GOCACHE=off go test

Ou nettoyez le cache de test et relancez le test:

go clean -testcache && go test 
4
Muhammad Soliman