Android'de actionbar öğeleri için junit test vakalarını nasıl yazarım? Tıklama etkinliklerini gerçekleştirmek için referansını almanın herhangi bir yolu var mı?Android'de Junit testi için Actionbar öğeleri için bir referans almak için herhangi bir yolu?
cevap
Kendi özel MenuItem sınıfımı oluşturarak ve Elle etkinlik için onOptionsItemSelected (MenuItem öğesini) çağırarak çözdüm. Junit testi için bunu yapmanın başka bir yolu var mı?
ActionBarSherlock tarafından sağlanan bir ActionBar kullanıyorum ve bu soruna rastladım. Bunu yapmak için bulduğum en iyi yoludur: Test etkinlikte
- onCreateOptionsMenu geçirilen Menü nesnesinin bir örneğini korumak ve test durumda bu erişilebilir hale. Test durumda
Eğer id ederek Menuıtem seçmek için izin Gereçleri başvuru ve Menü gerekir:
private void clickOnMenuItem(int menuItemId, Instrumentation instruments, Menu menuInstance) { final Integer itemId = menuItemId; final Menu menu = menuInstance; instruments.runOnMainSync(new Runnable() { @Override public void run() { menu.performIdentifierAction(itemId, 0); } });
}
Bir İşlem Çubuğu öğesini tıklatarak simüle edebilirsiniz şunun gibi:
public void testButton(){
final View view = activity.findViewById(com.example.R.id.button1);
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
view.requestFocus();
view.callOnClick();
}
});
}
sadece bir gözlem: 'callOnClick()', Api level 15'te eklenmiştir, bu yüzden daha eski sürümlerde mevcut değildir. Bir alternatif 'performClick()' dır. – gipi
Aşağıdaki örnekte, gezinme sekmesi düğmesi düğmesini alabiliyorum. f eylem çubuğu (yerel veya ActionBarSherlock). Sonra ben TouchUtils.clickView() ile onlara tıklayın:
try {
// Trying to get the ActionBar view '@id/android:action_bar_container' dynamically
int resId =
a.getResources().getIdentifier("action_bar_container", "id", "android");
View actionBarContainer = a.findViewById(resId);
// The class 'com.android.internal.widget.ActionBarContainer' must be in
// the classpath of this test project to be able to call
// the method 'getTabContainer' at runtime
Method getTabContainer =
com.android.internal.widget.ActionBarContainer.class.getMethod("getTabContainer",
(Class<?>[]) null);
HorizontalScrollView tabContainer =
(HorizontalScrollView) getTabContainer.invoke(actionBarContainer, (Object[]) null);
return ((ViewGroup) tabContainer.getChildAt(0)).getChildAt(tabIndex);
} catch (Exception e) {
// Trying with SherlockActionBar
com.actionbarsherlock.internal.widget.ActionBarContainer actionBarContainer =
(com.actionbarsherlock...) a.findViewById(R.id.abs__action_bar_container);
HorizontalScrollView tabContainer =
(HorizontalScrollView) actionBarContainer.getTabContainer();
return ((ViewGroup) tabContainer.getChildAt(0)).getChildAt(tabIndex);
}
}
Görünüm hiyerarşisine göz atarken benzer bir fikrim var ve paket adı nedeniyle sorun yaşıyordum, android adı harika çalışıyor, teşekkürler. Ayrıca, not uygulaması üzerinde bazı görüşleriniz varsa, bunlara da bu şekilde erişebilirsiniz, sadece doğru paket adını bulun. Görünüşe göre Bildirim çubuğu öğelerine de bu şekilde ulaşabilirsiniz. – PSIXO
kullanım robotium.jar kütüphanesi
import com.jayway.android.robotium.solo.Solo;
private Solo solo;
this.solo = new Solo(getInstrumentation(),getActivity());
//R.id.menu_action_signup Menu Iten id.
this.solo.clickOnView(this.solo.getView(R.id.menu_action_signup));
- 1. bilgi almak için herhangi bir yolu var mı github API
- 2. Android için Emma kod kapsamı JUnit testi
- 3. Spring denetleyicisinin JUnit testi için ApplicationContext yüklenemedi
- 4. androidde greyview için özel adaptör
- 5. Ruby: Bir referans dosyası için
- 6. Android için herhangi bir Sunucu/İstemci modeli?
- 7. Raylar için herhangi bir güvenlik testi eklentisi var mı?
- 8. İzolasyonda uygulamada herhangi bir ViewController için UI Testi nasıl yapılır
- 9. JUnit testi için marshalling yaparken JAXBException nasıl zorlanır?
- 10. Ekran görüntülerini almak için herhangi bir Win32 API'sı var mı?
- 11. TFS API - bir workitem türü için geçişlerin bir listesini almak için bir yolu var mı?
- 12. RenderBody() gereksinimini ortadan kaldırmak için herhangi bir yolu var mı?
- 13. Sadece belirli bir profil için özel bir maven temizlemek için herhangi bir yolu var mı?
- 14. typedef'i engellemek için ileri bir referans bildirmek?
- 15. FragmentStatePageAdapter yinelenen ActionBar menü öğeleri
- 16. Eşzamanlılık sınamak için Junit
- 17. nasıl pyplot bir şekil için eksenlerinin bir listesini almak için?
- 18. Eclipse'de Android JUnit Testi başlatılamıyor. Başlatıyoruz: Ben Android JUnit Testi bir acemi değilim kaynak bulma aracı
- 19. JUnit Java Testi
- 20. .NET'te HttpHandler programsal olarak eklemek için herhangi bir yolu?
- 21. ImageMagick. Derlemek ve çalıştırmak için herhangi bir yolu var mı?
- 22. IE6 için HTTP üstbilgilerini değiştirmenin herhangi bir yolu var mı?
- 23. Netbeans ve sıralama satırları, bunu yapmak için herhangi bir yolu?
- 24. html.Parse kullanmak için herhangi bir yolu 'iyi oluşturulmuş bir ağaç' yapmak için düğümleri eklemeden?
- 25. Bir pencere azure blob için erişim denetimi-izin-kök ayarlamak için herhangi bir yolu
- 26. Normal önceliğe sahip IO için bir win2k8 zamanlanmış görevi için herhangi bir yolu var mı?
- 27. Veri yüklemek için bir .SQL dosyasını yürütmek için herhangi bir Laravel yolu var mı
- 28. Kare dalga almak için vektör öğeleri nasıl atanır?
- 29. Bir ViewPager için sekmeleri artık ActionBar sekmelerinin kullanımdan kaldırıldığını (Lollipop)
- 30. PowerMockRunner ile JUnit testi çalıştırılamıyor
benim İşlem Çubuğu Liste-Navigasyon test etmek isterken aynı sorun yaşıyorsunuz. –
Aslında Android'de normal referanslar aldığınız ile aynıdır, akılda tutulması gereken tek şey testlerin farklı bir isim alanında çalışmasıdır, bu yüzden orijinal uygulamanın tam ad alanını kullanmanız gerekir. – gipi