रोबोइलेक्ट्रिक में एक बटन क्लिक का अनुकरण करना काफी सरल है:
Button someButton = (Button) findViewById(R.id.some_button);
someButton.performClick();
हालांकि, मुझे यह पता लगाना प्रतीत नहीं होता कि मेनू आइटम के साथ एक ही चीज़ कैसे करें। मैं Activity.onCreateOptionsMenu
में एक मेनू बनाता हूं, मैं इसके किसी एक आइटम पर एक क्लिक का अनुकरण कैसे कर सकता हूं?
6 जवाब
MenuItem item = new TestMenuItem() {
public int getItemId() {
return R.id.hello;
}
};
activity.onOptionsItemSelected(item);
ShadowActivity shadowActivity = Robolectric.shadowOf(activity);
Intent startedIntent = shadowActivity.getNextStartedActivity();
ShadowIntent shadowIntent = Robolectric.shadowOf(startedIntent);
assertThat(shadowIntent.getComponent().getClassName(), equalTo(HelloActivity_.class.getName()));
आनंद लेना!
रोबोइलेक्ट्रिक 3.0+ में, आप ShadowActivity.clickMenuItem(menuItemResId)
:
// Get shadow
ShadowActivity shadowActivity = Shadows.shadowOf(activity);
// Click menu
shadowActivity.clickMenuItem(R.id.settings_option_item);
// Get intent
Intent startedIntent = shadowActivity.getNextStartedActivity();
ShadowIntent shadowIntent = Shadows.shadowOf(startedIntent);
// Make your assertion
assertThat(shadowIntent.getComponent().getClassName(), equalTo(HelloActivity_.class.getName()));
रोबोइलेक्ट्रिक 3.0+ में कक्षा को RoboMenuItem
कहा जाता है
आप पहले से ही रोबोइलेक्ट्रिक का उपयोग कर रहे हैं तो RoboMenuItem
का उपयोग क्यों नहीं करते?
private MenuItem menuItemName = new RoboMenuItem(R.id.action_names);
private MenuItem menuItemStar = new RoboMenuItem(R.id.action_stars);
जितनी आवश्यकता हो उतने आइटम जोड़ें।
@Test
public void onOptionItemSelectedTest() {
activity.onOptionsItemSelected(menuItemStar);
activity.onOptionsItemSelected(menuItemName);
}
सुनिश्चित करें कि आपकी गतिविधि शून्य नहीं है
@Before
public void setUp() {
activity = Robolectric.buildActivity(MainActivity.class)
.create(new Bundle())
.saveInstanceState(new Bundle())
.restoreInstanceState(new Bundle())
.resume()
.get();
}
रोबोइलेक्ट्रिक संस्करण 4.3
रोबोइलेक्ट्रिक 2.4 का उपयोग करना:
Activity activity = Robolectric.buildActivity(MainActivity.class).create().get();
MenuItem item = new TestMenuItem(R.id.settings_option_item);
activity.onOptionsItemSelected(item);
यदि आप आवश्यक ओवरराइडिंग/एब्स्ट्रैक्ट कोडिंग की मात्रा में कटौती करना चाहते हैं तो आप मॉकिटो का भी उपयोग कर सकते हैं। इस तरह (कोटलिन में):
val menuItem = mock(MenuItem::class.java)
`when`(menuItem.itemId).thenReturn(R.id.itemId)
activity.onOptionsItemSelected(menuItem)
संबंधित सवाल
नए सवाल
android
एंड्रॉइड Google का मोबाइल ऑपरेटिंग सिस्टम है, जिसका उपयोग प्रोग्रामिंग या डिजिटल डिवाइस (स्मार्टफोन, टैबलेट, ऑटोमोबाइल्स, टीवी, वियर, ग्लास, IoT) को विकसित करने के लिए किया जाता है। एंड्रॉइड से संबंधित विषयों के लिए, एंड्रॉइड-विशिष्ट टैग जैसे कि एंड्रॉइड-इरादे, एंड्रॉइड-गतिविधि, एंड्रॉइड-एडॉप्टर आदि का उपयोग करें। विकास या प्रोग्रामिंग के अलावा अन्य प्रश्नों के लिए, लेकिन एंड्रॉइड फ्रेमवर्क से संबंधित हैं, इस लिंक का उपयोग करें: https: // android.stackexchange.com।