Articles of robotium

如何在Android Studio中使用Robotium?

Robotium是一个Android测试自动化框架,完全支持本机和混合应用程序。 既然Android Studio是Android开发的事实上的 IDE,我有兴趣尝试使用Android Studio。 但是,我找不到设置它的方法。 如何设置和使用Robotium来测试Android Studio?

使用Robotium检查片段的存在 – Android

有没有人知道一种方法来检查使用Robotium的片段的存在? 问候Rc

点击Robotium中的操作栏菜单项

我试图在Robotium中运行一些自动化testing。 我在我的应用程序中设置了一个选项菜单中的以下代码: public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater(); inflater.inflate(R.layout.logoutmenu, menu); return super.onCreateOptionsMenu(menu); } 我尝试点击Robotium中的菜单,使用代码: solo.sendKey(Solo.MENU); solo.clickOnView(solo.getView(R.id.share)); //share is the id of the menu item 但是我的testing因错误而失败: View is null and therefore cannot be clicked. 我也尝试使用下面的代码也失败了: solo.clickOnView(solo.getView(R.id.logoutmenu)); solo.clickOnMenuItem("Share My Artists");

为什么在ActionBarActivity上运行我的testing时会得到一个NoClassDefFoundError?

所以我使用的是Robotium,我的testing课程扩展了ActivityInstrumentationTestCase2类。 我已经在我的主项目中导入了v7支持库,并且还在testing项目中导入了库。 现在我不明白的是,testing类正在工作,当我改变被testing的类来扩展Activity但是当我改变它到ActionBarActivity它返回一个NoClassDefFoundError 。 我错过了什么? 这是我得到的日志 04-11 21:32:16.551: E/dalvikvm(23925): Could not find class 'com.example.project.ActivityClass', referenced from method com.example.project.tests.ActivityClass.<init>

切换到AndroidJUnitRunner后,现有Android UItesting停止工作

我们在相机function方面进行了一些UItesting,在我们将其从InstrumentationTestRunner切换到AndroidJUnitRunner作为迁移到Espresso / JUnit4的一部分,当我们调用getActivity()时,由于频繁的RuntimeException,我们不能再可靠地运行现有的testing。 : java.lang.RuntimeException: Could not launch intent Intent { flg=0x14000000 cmp=com.cookbrite.dev/com.cookbrite.ui.ReceiptCaptureActivity (has extras) } within 45 seconds. Perhaps the main thread has not gone idle within a reasonable amount of time? There could be an animation or something constantly repainting the screen. Or the activity is doing network calls on creation? See the […]

尝试在空对象引用上调用接口方法finishComposingText()

我在nexus 6上运行robotium,并得到以下错误 java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.view.inputmethod.InputConnection.finishComposingText()' on a null object reference at android.view.inputmethod.InputConnectionWrapper.finishComposingText(InputConnectionWrapper.java:78) at android.view.inputmethod.InputMethodManager.reportFinishInputConnection(InputMethodManager.java:859) at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3253) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 有问题的线是: solo.enterText((android.widget.EditText) solo.getView("amount"), "11.11"); 我已经证实,这个领域存在,不知道还有什么可能导致这个问题。 任何帮助,将不胜感激

如何旋转活动,我的意思是:使用Espresso屏幕方向更改?

我决定使用Google的Espresso进行应用testing的testing标准之一是: 屏幕方向旋转后,testing应保持活动状态 使用Espresso时如何旋转屏幕? 我已经尝试了以下的Robotium代码(是的,我在我的Espressotesting中放置了Robotium代码,请告诉我) solo.setActivityOrientation(solo.LANDSCAPE); solo.setActivityOrientation(solo.PORTRAIT); 但是当我在Espressotesting中运行它时,它会崩溃应用程序。 有没有办法做到这一点? 在此先感谢您的帮助

如何使用Robotium / Android SDK找出堆栈顶部的Activity?

我有一个Android应用程序的Robotiumtesting,它扩展了ActivityInstrumentationTestCase2。 testing在一个循环上运行,随机点击活动视图。 我想在每次迭代开始时validation哪些活动目前关注。 这种行为对我来说很重要,因为其中一个button能够启动另一个Activity,因此在循环中进一步的操作是不可能的,因为它们引用了被测活动(这是停止Robotiumtesting的时候)。 我想要一个适用于任何Activity的通用解决scheme,而不需要更改onDestroy()方法。 此解决scheme也必须在按下主页button时起作用。

我怎样才能并行运行独立的Robotium UItesting?

我正在使用Jenkins进行Android持续集成。 我有一些孤立的,独立的Robotium UItesting,目前需要12分钟才能对单个模拟器连续运行。 任何人都可以推荐一个很好的方式来并行运行,只需要6分钟(或更less)? 我了解了在多个设备/仿真器上并行运行完整testing套件的各种方法,例如,请参阅Jenkins Android模拟器插件, Spoon的多configuration(matrix)作业部分或AppThwack等云testing公司。 我知道如何运行我的testing的特定子集,通过使用JUnit注释,或者显然Spoon支持类似的function(请参阅我的问题 )。 我现在使用勺子运行我的全套testing套件(主要是利用可爱的HTML输出的截图)。 如果任何人有最好的方式来分裂我的testing,并行运行的提示,这将是很好的。 我认为我可以通过将testing分成两个独立的CI工作来实现这一点,但是维持两个独立的工作并结合结果听起来像是一个痛苦。

在android应用程序中unit testing什么

我的应用程序主要是通过graphics用户界面与大多数信息进行通信。 如果出现任何问题,通常会在networking调用中或对JSON对象进行错误的假设。 unit testing对于这些networking相关和I / O相关的任务是不好的,否则它们不会被称为unit testing。 所以我想在我的情况下收集unit testing的观点。 为什么我要testing一个Androidbutton是否可以点击或者EditText能看到我input的内容? 我只是不明白实施这些繁琐的testing的效用 private void initElements(){ placeButton = (Button) findViewById(R.id.currplace); placeButton.setText(MainActivity.this.getString(R.string.findingLocation)); placeButton.setEnabled(false); selectplaceLayout = (LinearLayout)findViewById(R.id.selectplaceLayout); selectplaceLayout.setVisibility(View.GONE); splash = (RelativeLayout)findViewById(R.id.splashbg); infoLayout = (LinearLayout)findViewById(R.id.infoLayout); } 如果上面这个方法通过,我所有的活动在onCreate中运行,那么我知道这个应用程序的作品。 这个unit testing将是一个耗时的事情。 耗时,因为我不熟悉jUnit和Androidtesting框架中的所有方法。 所以,长话短说,最重要的是什么? 有什么特别的方法可以考虑这些testing吗? 到目前为止,我所见过的所有示例和教程都只是为了简洁起见而谈论最简单的示例,但我不能想到在主要的客户端 – 服务器应用程序中进行unit testing的任何实际用途。 我期望通过访问我已经知道我声明和初始化的Android视图发现了什么? 我必须以一种有限的方式思考这个问题 所以,见识见识