6

मैं वर्तमान में अपने पैकेज के लिए कई यूनिट परीक्षण लिख रहा हूं जो जीएई गो पर चलता है। प्रश्न में पैकेज डेटा बचत और एपेंगिन/डेटास्टोर से लोड होने पर केंद्रित है। इस तरह के रूप में, मैं के बारे में 20 इकाई परीक्षण फ़ाइलों है कि इस तरह एक सा लग है:Google App Engine Go यूनिट परीक्षणों को कैसे गति दें?

enter image description here

:

package Data 

import (
    "appengine" 
    "appengine/aetest" 
    . "gopkg.in/check.v1" 
    "testing" 
) 

func TestUsers(t *testing.T) { TestingT(t) } 

type UsersSuite struct{} 

var _ = Suite(&UsersSuite{}) 

const UserID string = "UserID" 


func (s *UsersSuite) TestSaveLoad(cc *C) { 
    c, err := aetest.NewContext(nil) 
    cc.Assert(err, IsNil) 
    defer c.Close() 
    ... 

नतीजतन, प्रत्येक व्यक्ति के परीक्षण फ़ाइल devappserver का अपना संस्करण शुरू हो गया लगता है

इस 20 बार दोहराएं और मेरे यूनिट परीक्षण 10 मिनट से अधिक समय तक चलते हैं।

मुझे आश्चर्य है, मैं अपने परीक्षण सूट के निष्पादन को कैसे बढ़ा सकता हूं? क्या मेरे पास सिर्फ एक फ़ाइल है जो एटस्टेक्स बनाता है। न्यूकॉन्टेक्स्ट और बाद में गुजरता है, या क्या यह प्रत्येक इकाई परीक्षण के लिए अलग सूट का उपयोग कर मेरे कारण है? मैं इस बात को कैसे गति दे सकता हूं?

var ctx aetest.Context 

var c aetest.Context 

func TestMain(m *testing.M) { 
    var err error 
    ctx, err = aetest.NewContext(nil) 
    if err != nil { 
     panic(err) 
    } 
    code := m.Run() // this runs the tests 
    ctx.Close() 
    os.Exit(code) 
} 

func TestUsers(t *testing.T) { 
    // use ctx here 
} 

इस तरह डेव सर्वर को सभी परीक्षणों के लिए एक बार शुरू कर दिया गया है:

+0

क्या आप कुछ और लॉग की प्रतिलिपि बना सकते हैं, विशेष रूप से अधिकांश समय लेने वाले अनुभाग? मैं जीएई का उपयोग नहीं करता, इसलिए आपको इसे स्वयं डिबग करने का प्रयास करना चाहिए, लेकिन ऐसा लगता है कि 15 सेकंड टाइमआउट प्रतीक्षा करें https://code.google.com/p/appengine-go/source/browse/ appengine/aetest/instance.go # 156 –

+0

@EmilDavtyan अधिकांश लॉग संलग्न लॉग की तरह दिखते हैं। यह सिर्फ उन लॉगों में से बहुत कुछ है। मैं प्रत्येक फ़ंक्शन का अनुमान लगा रहा हूं जो कॉन्टेक्स्ट बनाता है संदर्भ को बंद करने के लिए भी कॉल करता है, इसलिए हो सकता है कि यह धीमा हो रहा है ... – ThePiachu

+0

आप प्रभावी रूप से दूसरे पैकेज का परीक्षण क्यों कर रहे हैं? – freeformz

उत्तर

4

आप एक कस्टम TestMain फ़ंक्शन का उपयोग कर सकते हैं। TestMain पर अधिक जानकारी यहां उपलब्ध हैं: http://golang.org/pkg/testing/#hdr-Main

+0

धन्यवाद! इससे मेरी टेस्ट गति में लगभग दस लाख प्रतिशत की वृद्धि हुई। –