Articles of robotium

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

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

如何选择在Robotium上单击哪个按钮以获得警报对话框?

我是Robotium的新手。 我使用对话框构建器创建了一个警告对话框,并使用show命令调用它。 我可以使用Robotium默认触发’ok’按钮,我无法对’cancel’按钮执行相同操作。 由于对话框与id没有关联,我不知道如何获取按钮的id。 这是我的对话框代码 alertDialogBuilder .setMessage(“Please enter only numbers without any spaces”) .setCancelable(true) .setNegativeButton(“Cancel”, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }) .setPositiveButton(“Ok”, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); 我用来触发Test Class中’ok’按钮的代码是 solo.getCurrentActivity().runOnUiThread(new Runnable() { public void run() { solo.getCurrentActivity().getCurrentFocus().requestFocus(); } }); this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER); […]

如何使用新的Gradle Build System在Android上进行集成测试?

我们的Android应用程序需要自动化测试,我们的团队正在使用Robotium为我们处理这个问题。 对于unit testing来说这不是问题,但我们也在编写一组端到端集成测试,以便不仅通过后端服务器来运行客户端。 我有一些测试可以做到这一点,但是如果可能的话,我想将它们与unit testing分开,以便我们的持续集成构建不需要运行实时服务器才能完成。 我们正在使用shiny的新Gradle构建系统。 我想知道我是否可以做一些像测试的风格或子项目,这取决于父APK以使它去。 我尝试用一​​个单独的项目完成这项工作,使用Robotium指令来测试无源调试APK,但它没有用。 也许是因为我在真正的硬件而不是模拟器。 即使已经安装了硬件加速,我的模拟器也运气不佳。 任何建议,或者我应该只是屏住呼吸并使用我的构建需要集成服务器在构建发生时可用?

测试运行失败:测试运行未能完成。 预计1次测试,收到0

尝试为我的应用启动JUnit测试(robotium)。 public class MainTest extends ActivityInstrumentationTestCase2 { private Solo solo; public MainTest() { super(“nix.android.contact”, MainActivity.class);// TODO Auto-generated constructor stub } protected void setUp() throws Exception { super.setUp(); solo = new Solo(getInstrumentation(), getActivity()); } public void AddContact() { solo.assertCurrentActivity(“main”, MainActivity.class); } } 表现 当我尝试运行测试时,进入控制台: 测试运行失败:测试运行未能完成。 预计1次测试,收到0 我尝试为其他应用程序(非常简单的应用程序)创建其他测试 – 工作。 谢谢

无法让Robotium在Android Studio中运行

我很难让Robotium在基于gradle的Android Studio上工作,我找不到办法 这是我的build.gradle文件 buildscript { dependencies { repositories { mavenCentral() mavenLocal() } classpath ‘com.android.tools.build:gradle:0.5.+’ } } apply plugin: ‘android’ repositories { mavenCentral() /* maven { url “https://oss.sonatype.org/content/repositories/snapshots” }*/ } sourceSets { testLocal { java.srcDir file(‘src/test/java’) resources.srcDir file(‘src/test/resources’) } } android { compileSdkVersion 17 buildToolsVersion “17.0.0” defaultConfig { minSdkVersion 15 targetSdkVersion 17 } sourceSets { instrumentTest.setRoot(‘src/test’) […]

Android Robotium NoClassDefFoundError

我只是想在Android JUnit测试中使用Robotium,但测试总是失败并出现错误: java.lang.NoClassDefFoundError:com.jayway.android.robotium.solo.Solo 抛出solo = new Solo(getInstrumentation(),getActivity()); 在setUp()方法中: protected void setUp() throws Exception { super.setUp(); solo = new Solo(getInstrumentation(), getActivity()); } 我在某处读到这可能与Android SDK修订版17有关,但我无法确认这一点,因为我第一次尝试使用SDK 17的Robotium。 Robotium jar正确添加到项目构建路径中。 有没有人遇到类似的问题? 问候K.

Android集成测试:Robotium还是UIAutomator?

我想为Android应用程序设置集成测试,我想知道什么是更好的: Robotium或最近推出的uiautomator 。 我之前有使用Robotium的经验,这个框架对于集成测试来说非常棒。 但最近推出的uiautomator看起来也不错。 目前我看到uiautomator有几个限制: 没有xml测试报告 没有兼容性(仅适用于4.1+) 没有Eclipse支持,这意味着很多控制台工作 另一方面,此工具允许您摆脱测试中的应用程序沙箱,并且它独立于程序包,因此可以一起测试多个应用程序。 另外我知道用Maven,Robotium和像jenkins这样的CI进行设置是相当容易的,但是我不确定uiautomator是否那么容易。 我想问一下uiautomator还有其他任何陷阱吗? 或者最好坚持使用Robotium?

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

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

如何并行运行独立的Robotium UI测试?

我正在使用Jenkins进行Android持续集成。 我有一些独立的,独立的Robotium UI测试,目前需要12分钟才能对单个模拟器进行串行运行。 任何人都可以建议一个好的方法来并行运行它们只需要6分钟(或更短)吗? 我知道在多个设备/模拟器上并行运行完整测试套件的各种方法,例如,请参阅Jenkins Android Emulator插件, Spoon或AppThwack等云测试公司的多配置(矩阵)作业部分。 我知道如何通过使用JUnit注释来运行我的测试的特定子集,或者显然Spoon支持类似的function(请参阅我的问题 )。 我现在正在使用Spoon来运行我的完整测试套件(主要是为了利用带有屏幕截图的可爱HTML输出)。 如果有人提供关于拆分测试并将其并行运行的最佳方法的提示,那就太棒了。 我假设我可以通过将测试分成两个独立的CI作业来实现这一点,但是维护两个单独的作业并结合结果听起来很痛苦。

什么unit testing,在Android应用程序中

我的应用程序主要是GUI,它们可以与服务器进行大部分信息通信。 如果出现任何问题,通常会在网络调用中或对JSON对象做出错误的假设。 unit testing不适合这些网络相关和I / O相关任务,否则它们不会被称为unit testing。 所以我试图在我的案例中收集unit testing的要点。 为什么我会测试Android按钮是否可以单击或EditText可以看到我键入的内容? 我只是不明白实现这些繁琐的测试的效用 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和Android测试框架中的所有方法。 所以,长话短说,重点是什么? 有什么特别的方式我应该考虑这些测试吗? 到目前为止,我所看到的所有示例和教程仅仅讨论了最简单的示例,为了简洁起见,但我无法想到在主要的客户端 – 服务器应用程序中进行unit testing的任何实际用途。 通过访问我已经知道并声明并初始化的android视图,我期望发现什么? 我必须以过于有限的方式思考这个问题 所以,洞察力赞赏