यह वास्तव में ऐसा लगता है कि कुछ जादू चल रहा है और मुझे यह समझने में दिलचस्पी है कि ऐसा क्यों होता है :)
मेरे पास यूनिट-टेस्ट है:
public class SelectThemeActivityTest
extends ActivityInstrumentationTestCase2<SelectThemeActivity> {
private final static int[] STATIC_ARRAY = { 0, 1, 2 };
public SelectThemeActivityTest() {
super("com.the7art.simplewallpaper", SelectThemeActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
// some array usage here - will throw NullPointerEcxeption on second test
// see description below
STATIC_ARRAY[0] = 2;
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
public void testFirst() {
}
public void testSecond() {
}
public void testThird() {
}
}
यदि मैं इस परीक्षण मामले को चलाता हूं तो पहला परीक्षण सफलतापूर्वक पूरा होता है और बाकी सभी NullPointerException को setUp() से फेंक कर विफल हो जाते हैं - वह पंक्ति जो करने का प्रयास करती है STATIC_ARRAY तक पहुंचें।
जो बात मुझे और भी अधिक परेशान करती है, वह यह है कि यदि मैं ActivityInstrumentationTestCase2 के बजाय AndroidTestCase को बढ़ाने के लिए परीक्षण केस को बदलता हूं, तो सभी परीक्षण सफलतापूर्वक पूर्ण होते हैं! जादू! :-)
साथ ही यदि मैं STATIC_ARRAY से 'स्थिर' कीवर्ड हटा दूं, तो परीक्षण भी सफल हो जाते हैं।
तो यह स्पष्ट है कि कुछ परीक्षण रन के बीच इसे शून्य बनाकर मेरे STATIC_ARRAY को संशोधित कर रहा है, संभवतः tearDown() में और कुछ को ActivityInstrumentationTestCase2< के साथ करना है /em>, लेकिन उस कुछ को कैसे ट्रैक करें? :-) कोई विचार?
2 जवाब
इसका कारण है स्क्रबक्लास () विधि जिसे super.tearDown(): google- समूह चर्चा. एक समाधान है - इस पद्धति को ओवरराइड करना ए>।
STATIC_ARRAY पर एक निगरानी बिंदु रखें और देखें कि कौन इसे संशोधित करता है, हालांकि बहुत अधिक उम्मीदवार नहीं हैं (चूंकि क्षेत्र निजी है, केवल एक ही उम्मीदवार है, जिस वर्ग को आपने अभी पोस्ट किया है, इसलिए तस्वीर में कुछ गायब है।
संबंधित सवाल
नए सवाल
android
एंड्रॉइड Google का मोबाइल ऑपरेटिंग सिस्टम है, जिसका उपयोग प्रोग्रामिंग या डिजिटल डिवाइस (स्मार्टफोन, टैबलेट, ऑटोमोबाइल्स, टीवी, वियर, ग्लास, IoT) को विकसित करने के लिए किया जाता है। एंड्रॉइड से संबंधित विषयों के लिए, एंड्रॉइड-विशिष्ट टैग जैसे कि एंड्रॉइड-इरादे, एंड्रॉइड-गतिविधि, एंड्रॉइड-एडॉप्टर आदि का उपयोग करें। विकास या प्रोग्रामिंग के अलावा अन्य प्रश्नों के लिए, लेकिन एंड्रॉइड फ्रेमवर्क से संबंधित हैं, इस लिंक का उपयोग करें: https: // android.stackexchange.com।
setUp()
में अपनी सरणी बनानी चाहिए।