如何以编程方式获得当前安卓窗口屏幕的所有组件和小工具的ID?
我使用Robotium框架来实现Android测试目的,并手动将Component_ID或索引ID或从层次结构查看器中拿出一部分窗口小部件来将值放在运行时以进行测试目的. 有什么方法可以通过编程方式处理component_id或index ID或窗口小部件的一部分?到目前为止 解决方案 import time, subprocess, socket, re afttFile=open("ApplicationPackage.DOC", "r") fileName="" packageName="" activityName="" packageFile=None window_dump=None current_window=None windows=None #Function for executing adb shell command def adb(command, input=None): if not isinstance(command,lis
0 2024-02-19
编程技术问答社区
使用Android JUnit访问外部文件(AVD设备以外的)。
我正在使用机器人自动化Android应用程序.为此创建了一个Android测试项目.在项目文件夹中,我想保留一些文件,例如.properties/.xls等,并希望从/写入这些文件.例如,我在我的Android测试项目目录( src/main/java/config )下有一个config.properties文件,我想通过编码访问该文件: 对于普通Java项目,我使用以下代码段来加载 config.properties 文件: CONFIG = new Properties(); FileInputStream fs = new FileInputStream(System.getProperty("user.dir")+"/src/main/java/config/config.properties"); CONFIG.load(fs); 同一代码 - 执行为Android Junit Project抛出错误时,说 java.io.filenotfoundexcept
0 2024-02-19
编程技术问答社区
如何将MonkeyRunner和Robotium结合起来使用(不要分开使用!)。
如何一起使用Monkeyrunner和Robotium(不单独!)测试我的Android应用 解决方案 好吧,我找到了这个 kharitonenko_yac_2012.pdf 幻灯片#22.有一个方案,如何使用机器人和蒙基纳的组合. 例如,在测试中,您需要从Android Native相机中拍摄快照,而Robotium无法做到这一点. Monkeyrunner可以做到.但是您在机器人中开发的大多数测试用例,因此,正如我所知,您可以为此操作运行Monkeyrunner脚本,然后继续使用Robotium.我是吗? 其他解决方案 在一般的monkeyrunner中,基于基于用户输入的通用建筑仪器.它不需要任何代码知识,也不需要对申请过程的任何访问. 机器人或浓缩咖啡是基于GoogleInsTrumentationTestrunner,该过程像您的应用程序一样在同一过程中运行,因此可以直接访问以查看组件,但也需要代码访问. 因此,总的来说,您可以使用机器人
0 2024-02-19
编程技术问答社区
安卓测试。从Instrumentation膨胀和显示一个自定义Toast
我正在尝试显示自定义吐司,但要从我的自动测试而不是从应用程序本身中进行. 布局通货膨胀不起作用.甚至有可能从测试项目中夸大视图并显示这些内容吗? 什么工作是标准吐司: final Activity targetActivity = Solo.getCurrentActivity(); // Using Robotium to get current displayed Activity Toast.makeText(targetActivity, "Hello from Instrumentation", Toast.LENGTH_SHORT).show(); 不起作用的是: final Activity targetActivity = Solo.getCurrentActivity(); // Using Robotium to get current displayed Activity LayoutInflater inflater = target
0 2024-02-19
编程技术问答社区
Android Espresso如何使用apk编写测试?
我是 Robotium用户现在切换到浓缩咖啡任何人都可以告诉我如何在浓缩咖啡中使用APK编写测试,就像我们在Robotium中所做的那样,而无需使用ACCCESS但是使用app apk. 以及如何在没有r.id的情况下访问浓缩咖啡中的视图?就像我们在机器人中所做的那样 solo.getview("viewidText") 在机器人中,这就是我们的做法 public class CoreTest extends ActivityInstrumentationTestCase2 { private Solo solo; //class name of the app launcher activity private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.rex.binderapps.RecorderActivity"; private static Class launche
0 2024-02-19
编程技术问答社区
Robotium和Jenkins的UI测试错误
我在尝试在没有显示器的MacOS Mini上运行Robotium UI测试时首先遇到了这个问题.我在屏幕上添加了Robotium代码以测试UI单击,因为我们想在回归测试中添加一些UI自动化.我在jenkins服务器上遇到的错误是在运行solo.clickinlist(x)时: junit.framework.AssertionFailedError: AbsListView is not found! [exec] at com.jayway.android.robotium.solo.Waiter.waitForAndGetView(Waiter.java:492) [exec] at com.jayway.android.robotium.solo.Clicker.clickInList(Clicker.java:406) [exec] at com.jayway.android.robotium.solo.Clicker.
0 2024-02-19
编程技术问答社区
Espresso 如何在不使用R.id.viewid的情况下访问视图,就像我们在robotium中做的那样?
我正在从机器人切换到浓缩咖啡,我正在使用APK 编写测试,我无法访问代码. 在Robotium中使用Solo.GetView(" View-id")我们可以访问视图,但我没有在浓缩咖啡中如何做? 浓缩咖啡witid()方法需要r.id.viewid,我无法访问. public class AaEspressoTest { private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.tri.re.CordActivity"; private static Class launcherActivityClass; static { try { launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); } catch (ClassNotFoundException e) {
0 2024-02-19
编程技术问答社区
如何使用ActivityInstrumentationTestCase2来捕获异常?
我正在努力使用类Android应用程序的测试用例中的预期例外noreferrer"> activityinstrumentationTestcase2 . 我写了一个非常简单的方案,该方案正在引发问题,一旦解决了问题,我可能可以为我的应用做同样的事情.简单方案的片段在下面. 首先,我要测试的应用程序,它在其ongreate方法中提出了nullpointerexception. package com.example.crashtest; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
0 2024-02-19
编程技术问答社区
使用Robotium和Cucumber进行截图的正确方法
当一种场景使用 Robotium 和 Cucumber ?? 时 我尝试过(没有成功,因为它没有执行 runtest 方法): import cucumber.api.CucumberOptions; import cucumber.api.java.After; import cucumber.api.java.Before; @CucumberOptions(features = "features", tags = {"~@ignore"}) public class CustomInstrumentationTestCase extends ActivityInstrumentationTestCase2 { protected Solo solo; public CustomInstrumentationTestCase() { super(LaunchActivity.class); }
0 2024-02-19
编程技术问答社区
在Robotium中使用模拟测试
我在rbotium的测试中使用模拟.我的第一个测试失败和另一个测试通行证.我认为这是因为模拟还没有准备好进行测试.但是,当我添加假测试时,所有测试都会通过. 我的假测试: public void test_ShowA_HomeActionbarTabClicked() { assertEquals("",""); } 所有测试: public void test_ShowCategoryGamesListFragment_CategoryListActionbarTabClicked() { //click on Categories action bar tab getSolo().clickOnText(getSolo().getCurrentActivity().getString(R.string.title_section1)); getSolo().clickOnText(get
0 2024-02-19
编程技术问答社区
Robotium。测试运行未能完成。预期N个测试,收到(N-1)
Android测试仍然是我的头痛.我创建了最简单的应用程序,只是为了清除 robotium 的工作方式,每次测试都会失败. Running tests Test running started Test failed to run to completion. Reason: 'Test run failed to complete. Expected 1 tests, received 0'. Check device logcat for details Test running failed: Test run failed to complete. Expected 1 tests, received 0 一旦我"预期3次测试,接收2个测试".满足了使用No-Args构造函数的条件.该问题如何解决? mainActivity.java public class MainActivity extends Activity { @Override
2 2024-02-19
编程技术问答社区
为安卓测试解锁仿真器或设备
我正在编写Android功能测试.我需要醒着设备,并将应用程序可视化,以便它们工作.我已经咨询了 android开发人员为此.但是,提出的解决方案有几个问题: 该提出的方法现在具有多种不建议的方法. Android API现在建议我在窗口上使用标志: 此类在API级别13中弃用.使用flag_dismiss_keyguard 和/或flag_show_when_locked;这使您无缝 当您的应用程序进出时,隐藏关键的守卫 前景,不需要任何特殊权限 要求.由Newkeyguardlock(字符串)返回的句柄,允许您 禁用/重新安装密钥守卫. 我尝试了这个建议,但是,与弃用的解决方案相反,一个jsut的标志对我不起作用 - 它无法解锁设备.我还找到了证实标志解决方案不稳定的消息来源(例如,有关 第二个问题是我需要在测试的应用程序中添加权限.我认为这是完全错误的方法(修改正在测试的代码以便对其进行测试).我找到了几个地方建议我使用src/debug/AndroidManif
0 2024-02-19
编程技术问答社区
在出现异常后继续进行安卓测试
在Android Studio中运行我的测试套件时,偶尔会从我的代码中的某个地方(不在测试中)抛出一个例外,这会导致当前测试失败(好的,因为测试已经找到了错误)和其余的测试要停止运行(不太好).我希望测试继续运行,以便整个套件完成.这可能吗? 解决方案 通过解释器和编译器的概念不可能. Android使用JVM(Java Virtual Machine)和JIT(及时)编译器.因此,在错误时,它将无法进一步编译,因此执行将从错误点停止. 其他解决方案 mayur ,这是不可能的. 解决方案是将测试分为单独的项目. 它提供了2个好处: 您可以并行运行测试(更快执行,尤其是在 多核平台) 您可以一次捕获多个错误 弊端: 需要一些项目重组 不允许您抓住所有 一次错误
2 2024-02-19
编程技术问答社区
无法让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 {
0 2024-02-19
编程技术问答社区
开始使用Robotium。未找到编辑文本
我刚开始使用机器人,写了我的第一个测试,我遇到了这个奇怪的错误: junit.framework.AssertionFailedError: 2131165500 EditTexts are not found! 这是我的测试用例 public class TestRegistrationActivity extends ActivityInstrumentationTestCase2{ private Solo solo; public TestRegistrationActivity() { super(RegistrationActivity.class); } public void setUp() throws Exception { solo = new Solo(getInstrumentation(), getActivity());
0 2024-02-19
编程技术问答社区
如何用Gradle运行一个单一的仪器测试?
我正在尝试使用此行进行测试...但是这启动了所有测试: ./gradlew -DconnectedAndroidTest.single=LandingActivityTests connectedAndroidTest 如何启动单个测试? 解决方案 您可以分两个步骤运行单个Android测试: ./gradlew installDebugAndroidTest adb shell am instrument -w -e class com.example.MyInstrumentationTest#testFoo com.example.test/android.support.test.runner.AndroidJUnitRunner 其他解决方案 由于Android Gradle插件1.3.0版,您可以使用 ./gradlew -Pandroid.testInstrumentationRunnerArguments.class=your.pa
0 2024-02-19
编程技术问答社区
用Robotium进行生命周期测试。杀死和重启活动
如何使用Robotium的solo.goBack()? 重新启动一项活动 以下内容不会重新启动活动:(测试完成还可以) solo.goBack(); try { // recreate activity here runTestOnUiThread(new Runnable() { public void run() { getInstrumentation().callActivityOnCreate(getActivity(), null); getInstrumentation().callActivityOnStart(getActivity()); getInstrumentation().callActivityOnResume(getActivity()); }}); } 您如何
2 2024-02-19
编程技术问答社区
用Gradle在Android Studio中测试Robotium的具体口味
所以...我正在尝试为我的应用程序进行一些测试.我的应用程序中有几种口味,我想为每种口味构建单独的测试. 从机器人文档中,我使用了" Androidtest/Java"文件夹,其中包含包装.我在经过一些建议以输入风味的.Test之后尝试了事件. 这里的另一个建议: http://tools.ands.android.com/Tech-Docs/New-Build-System/用户指定是制作几个名为" AndroidTest"的文件夹,但没有起作用. 我有Gradle 2.2.1的最新Android Studio. 我想开始1个测试以进行单个风味.目前,在所有配置中,我尝试了" AndroidTest"文件夹中的所有测试. 因此,拥有Flav1,Flav2,Flav3等.如何仅针对Flav2编写和运行测试. 当前,运行" ConnectedAndroidTestFlav3",例如,在" AndroidTest"中运行所有测试 预先感谢! 解决方案 只是再次尝试,这
0 2024-02-18
编程技术问答社区
如何在Android Studio中使用Robotium?
现在,Android Studio是用于Android开发的事实上的 de em de em de,我有兴趣使用Android Studio尝试一下.但是,我找不到设置它的方法. 如何设置和使用机器人与Android Studio进行测试? 解决方案 指南: 将以下行添加到依赖项 innen build.gradle文件的部分(此文件位于与 src 文件夹相同的级别,更改如果需要的话,版本名称: androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.2.1' 如果由于某种原因您不想让Gradle下载依赖项,然后 您可以手动添加它们:将Robotium.jar放入 libs 文件夹中.右键单击它,然后选择添加为库... 在 src 文件夹中创建另一个文件夹 androidTest 内部创建 java 文件夹 (可选步骤,请参见下文)它在内部创建一个与App的软件包名称相同名
2 2024-02-18
编程技术问答社区
安卓测试原始资源
我在Android Studio中具有以下文件夹结构: ├── androidTest │ ├── java │ └── res │ └── raw │ └── test_file └── main ├── java └── res └── raw └── app_file 我正在尝试访问AndroidTest元素原始文件夹中的test_file资源.这是从ActivityInstrumentationTestCase2继承的机器人测试用例中的代码: InputStream is = this.getInstrumentation() .getContext() .getResources() .openRawResource(R.raw.test_file); Andro
0 2024-02-17
编程技术问答社区