मैं वर्तमान में अपने पैकेज के लिए कई यूनिट परीक्षण लिख रहा हूं जो जीएई गो पर चलता है। प्रश्न में पैकेज डेटा बचत और एपेंगिन/डेटास्टोर से लोड होने पर केंद्रित है। इस तरह के रूप में, मैं के बारे में 20 इकाई परीक्षण फ़ाइलों है कि इस तरह एक सा लग है:Google App Engine Go यूनिट परीक्षणों को कैसे गति दें?
: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
}
इस तरह डेव सर्वर को सभी परीक्षणों के लिए एक बार शुरू कर दिया गया है:
क्या आप कुछ और लॉग की प्रतिलिपि बना सकते हैं, विशेष रूप से अधिकांश समय लेने वाले अनुभाग? मैं जीएई का उपयोग नहीं करता, इसलिए आपको इसे स्वयं डिबग करने का प्रयास करना चाहिए, लेकिन ऐसा लगता है कि 15 सेकंड टाइमआउट प्रतीक्षा करें https://code.google.com/p/appengine-go/source/browse/ appengine/aetest/instance.go # 156 –
@EmilDavtyan अधिकांश लॉग संलग्न लॉग की तरह दिखते हैं। यह सिर्फ उन लॉगों में से बहुत कुछ है। मैं प्रत्येक फ़ंक्शन का अनुमान लगा रहा हूं जो कॉन्टेक्स्ट बनाता है संदर्भ को बंद करने के लिए भी कॉल करता है, इसलिए हो सकता है कि यह धीमा हो रहा है ... – ThePiachu
आप प्रभावी रूप से दूसरे पैकेज का परीक्षण क्यों कर रहे हैं? – freeformz