फोर्स रिटायरिंग या टेस्ट कैशिंग को अक्षम करें


106

मुसीबत:

जब मैं एक ही गो टेस्ट को दो बार चलाता हूं तो दूसरा रन बिल्कुल नहीं होता है। परिणाम पहले रन से कैश वाले हैं।

PASS    
ok      tester/apitests    (cached)

लिंक

मैंने पहले ही https://golang.org/cmd/go/#hdr-Testing_flags की जाँच की, लेकिन उस उद्देश्य के लिए कोई क्ली फ़्लैग नहीं है।

सवाल:

क्या हमेशा परीक्षण चलाने के लिए परीक्षण परीक्षण को मजबूर करने की संभावना है और परीक्षा परिणामों को कैश करने के लिए नहीं।

जवाबों:


161

परीक्षण झंडे डॉक्स में वर्णित कुछ विकल्प हैं :

  • go clean -testcache: सभी परीक्षा परिणाम की समय सीमा समाप्त
  • अपने टेस्ट रन पर नॉन-कैशेबल फ्लैग्स का उपयोग करें। मुहावरेदार तरीका उपयोग करना है-count=1

उस ने कहा, आपके कोड या परीक्षण कोड में परिवर्तन कैश्ड परीक्षा परिणामों को अमान्य कर देगा (स्थानीय फ़ाइलों या पर्यावरण चर के रूप में अच्छी तरह से उपयोग करते समय इसमें विस्तारित तर्क है), इसलिए आपको मैन्युअल रूप से परीक्षण कैश को अमान्य करने की आवश्यकता नहीं होनी चाहिए।


4
यह तब भी उपयोगी है जब आप एक चलती निर्भरता के विरुद्ध परीक्षण कर रहे होते हैं। उदाहरण के लिए एक डेटाबेस जहाँ आप निर्भरता को सेटअप / फाड़ देते हैं लेकिन आपका कोड नहीं। ऐसा लगता है कि ओपी एक नॉन स्टबड एपीआई के खिलाफ परीक्षण कर रहा था जो कि उनके सवाल का संकेत है।
जोकिम

क्या केवल विशिष्ट परीक्षणों के लिए कैश को साफ करना संभव है?
निकिलमिलो

3
ध्यान दें कि go clean -testcache ./...काम भी करता है (एक मोनोरपो के शीर्ष पर)
voutasaurus

मैंने इसे बेहतर बनाने के लिए एक मुद्दा खोला है: github.com/golang/go/issues/39056?ts=4
wesm

23

Go11 में, मैं GOCACHEमॉड्यूल के साथ उपयोग करके कैश को अक्षम नहीं कर सका , मैंने -count=1इसके बजाय उपयोग किया:

go test -count=1

Go11 से पहले:

GOCACHE=off go test

या, परीक्षण कैश साफ़ करें और फिर से परीक्षण चलाएँ:

go clean -testcache && go test 

19

यहाँ भी GOCACHE=offउल्लेख किया गया है


5
के लिए go 1.11और जाने मॉड्यूल का उपयोग करने पर सुविधा होने GOCACHE=offत्रुटि देता go: cannot use modules with build cache disabled। बेहतर है कि सुझाव का उपयोग करें -count 1
ज़ेडबेरा

1
आप ठीक कह रहे हैं, github.com/golang/go/issues/26809#issuecomment-410477084 के अनुसार GOCACHEधीरे-धीरे चरणबद्ध तरीके से चरणबद्ध तरीके से 1.12 हो जाएगा ताकि उपयोग go test -count=1 ...करना अब सुरक्षित विकल्प हो।
सूलिटिश

build cache is disabled by GOCACHE=off, but required as of Go 1.12
फ्रांसेस्को कैसुला

7

जिस तरह से मैंने इसे तय किया (मैं macOS पर विजुअल स्टूडियो कोड का उपयोग कर रहा हूं):

कोड> वरीयताएँ> सेटिंग्स

...सेटिंग्स पेज के दाईं ओर क्लिक करें

क्लिक करें Open settings.json

कोई एक:

  1. निम्नलिखित स्निपेट को अपनी सेटिंग में जोड़ें। Json फ़ाइल

    "go.testEnvVars": {
        "GOCACHE": "off"
    }
    
  2. go.testEnvVarsनिम्नलिखित को शामिल करने के लिए मूल्य बदलें :"GOCACHE": "off"

4
1.12 गो के रूप में बिल्ड कैश की आवश्यकता है, इस प्रकार सेटिंग गो GOCACHEके हाल के संस्करणों के साथ काम नहीं करेगा। वीएस कोड का एक समाधान "go.testFlags": ["-count=1"]सेटिंग में सेट करना है।
आर्मंड ग्रिललेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.