चलो इस सरल परीक्षण कोड पर विचार करें।गो परीक्षण आउटपुट में लाइन नंबर कैसे ठीक करें?
(नोट:। assertSomething
यहां सुपर सरल है, लेकिन आम तौर पर मुझे लगता है कि कई चीजों पर विचार करेंगे और त्रुटि के एक से अधिक प्रकार की रिपोर्ट कर सकता है हाथ में इस काम के लिए एक और अधिक विशिष्ट सहायक लिखना चाहते हैं)
--- FAIL: TestFoo (0.00s)
hello.go:12: Something's not right
FAIL
exit status 1
FAIL kos/hello 0.008s
मैं दो प्रश्न हैं:
package hello
import "testing"
func TestFoo(t *testing.T) {
assertSomething(t, 2+2 == 4) // line 6
assertSomething(t, 2+3 == 6) // line 7
}
func assertSomething(t *testing.T, expected bool) {
if !expected {
t.Error("Something's not right") // line 12
}
}
जब मैं go test
चलाने के लिए, मैं निम्नलिखित मिल
1) त्रुटि पंक्ति 12 को इंगित करती है - क्यों? t.Error
कैसे पता लगाता है कि इसे किस लाइन से बुलाया गया था?
2) सहायक में, मुझे लगता है कि t.Error
ढेर स्तर उच्च देखने के मुद्रित करने के लिए लाइन संख्या निर्धारित करने के निर्दिष्ट करने के लिए, ताकि मैं इस तरह एक संदेश प्राप्त होगा चाहते हैं:
--- FAIL: TestFoo (0.00s)
hello.go:7: Something's not right
अजगर की अनुमति देता है उदाहरण के लिए, warnings.warn("message", stacklevel=2)
में मैं इसे समकक्ष कैसे कार्यान्वित करूं?
जहां तक 1 का संबंध है, यह संभवतः [runtime.Caller] (http://godoc.org/runtime#Caller) का उपयोग इस उद्देश्य के लिए करता है। कुछ स्तरों पर जाने के लिए 'छोड़ें' के लिए एक अलग संख्या की आपूर्ति करें। मुझे यकीन नहीं है कि आप परीक्षण पैकेज कोड को बदले बिना ऐसा करने के लिए 'test.XXX' बता सकते हैं। – jimt