मैं एंड्रॉइड परीक्षण सामग्री के लिए नया हूँ। मैं परीक्षण करना चाहता हूं कि बटन पर क्लिक करने से संबंधित गतिविधि खुल जाएगी या नहीं। मैंने कुछ शोध किया और पाया कि मुझे जांच करने के लिए ActivityManager का उपयोग करने की आवश्यकता होगी।एंड्रॉइड JUnit परीक्षण केस में Button.perform पर क्लिक करें?
समस्या यह है कि, मुझे "क्लिक" भाग काम नहीं मिल रहा है। मैं Button.performClick()
का उपयोग करने की कोशिश कर रहा हूं।
प्रारंभ में मैंने अभी यह फ़ंक्शन कहा था, और यह कहने में एक त्रुटि मिली कि मैं वर्तमान धागे में ऐसा नहीं कर सकता। कुछ googling के बाद मुझे पता चला कि मुझे इसे यूआई थ्रेड में कॉल करने की आवश्यकता है, और runOnUiThread(Runnable r) method
पर आया।
मैं जिस बटन को क्लिक करने का प्रयास कर रहा हूं वह _helloButton_
है। यह _setUp()_ method
में प्राप्त किया जाता है। मैंने _assertNotNull_
पर यह सुनिश्चित करने के लिए जांच की है कि यह वहां है।
एक परीक्षा पद्धति के भीतर, मैं
mActivity.runOnUiThread(new Runnable() {
public void run() {
helloButton.requestFocus();
}
});
helloButton.performClick();
संपर्क करें, मैं लाइन requestFocus()
बुला पर एक एनपीई मिलता है।
अगला मैं
mActivity.runOnUiThread(new Runnable() {
public void run() {
helloButton.performClick();
}
});
की कोशिश की और अब भी वही नल पॉइंटर एक्सेप्शन मिलता है।
JUnit परिप्रेक्ष्य पर, मैं यह संदेश प्राप्त
Test failed to run to completion. Reason: 'Instrumentation run failed due to 'java.lang.NullPointerException''. Check device logcat for details
और स्टैकट्रेस इस तरह दिखेगा।
08-05 19:03:11.922: ERROR/AndroidRuntime(578): Uncaught handler: thread main exiting due to uncaught exception
08-05 19:03:11.922: ERROR/AndroidRuntime(578): java.lang.NullPointerException
08-05 19:03:11.922: ERROR/AndroidRuntime(578): at com.example.helloworldmk2.test.HelloWorldMK2Test$1.run(HelloWorldMK2Test.java:57)
08-05 19:03:11.922: ERROR/AndroidRuntime(578): at android.os.Handler.handleCallback(Handler.java:587)
08-05 19:03:11.922: ERROR/AndroidRuntime(578): at android.os.Handler.dispatchMessage(Handler.java:92)
08-05 19:03:11.922: ERROR/AndroidRuntime(578): at android.os.Looper.loop(Looper.java:123)
08-05 19:03:11.922: ERROR/AndroidRuntime(578): at android.app.ActivityThread.main(ActivityThread.java:4363)
08-05 19:03:11.922: ERROR/AndroidRuntime(578): at java.lang.reflect.Method.invokeNative(Native Method)
08-05 19:03:11.922: ERROR/AndroidRuntime(578): at java.lang.reflect.Method.invoke(Method.java:521)
08-05 19:03:11.922: ERROR/AndroidRuntime(578): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
08-05 19:03:11.922: ERROR/AndroidRuntime(578): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
08-05 19:03:11.922: ERROR/AndroidRuntime(578): at dalvik.system.NativeStart.main(Native Method)
रेखा 57 वह जगह है जहां मैं helloButton.performClick()
पर कॉल कर रहा हूं।
मुझे यकीन नहीं है कि मुझे एनपीई क्यों मिल रहा है; assertNotNull बिना किसी समस्या के गुजरता है। यदि आप इस मुद्दे के साथ मेरी मदद कर सकते हैं, तो मैं वास्तव में इसकी सराहना करता हूं। अग्रिम में धन्यवाद।
संपादित करें: मैं इस विशेष परीक्षण कक्षा के लिए ActivityInstrumentationTestCase2 subclassing कर रहा हूँ।
EDIT2: एनपीई होने से पहले लॉगकैट कुछ त्रुटियों को बाहर निकाल देता है।
मैं देख रहा हूँ
08-05 20: 08: 54.702: त्रुटि/AndroidRuntime (754): त्रुटि: धागा देते विफल रही
और
08-05 20: 08: 58.642: त्रुटि/gralloc (52): [unregister] 0x3e1b28 को अभी भी लॉक करें (राज्य = 40000001)
स्पष्टीकरण के लिए, आप एक बटन है कि एक नई गतिविधि के शुभारंभ को गति प्रदान करेगा प्रेस करना चाहते हैं विधि का उपयोग कर सकते हैं? –
हां। बटन पर ऑनक्लिक लिस्टनर है, जो एक और गतिविधि शुरू करता है। –