问题标签 [android-instrumentation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
372 浏览

android - Android Espresso + Lazy ListView 点击

我有一个 ListView,它的元素是懒惰地获取的(当你滚动到列表中的最后一个元素时,会触发一个新的获取,完成后,新元素会添加到列表的末尾)。我的 ListView 适配器由一个Product对象支持:

例如,具有给定名称的元素位于第 25 位。我怎样才能实现这种滚动列表的行为,直到该项目在适配器中可用,以便我可以使用:onData(Matcher<Object> dataMatcher)安全?因为现在,使用时onData( ... )出现以下异常:

0 投票
1 回答
1120 浏览

android - ContextWrapper.startInstrumentation() 不启动 Instrumentation 测试

ABD shell正常工作开始仪器测试:

为了在未连接到计算机的设备上执行这些测试,我尝试使用以下代码从应用程序(既不是目标应用程序也不是测试应用程序)执行这些测试:

调试检索以下正确值:

虽然startInstrumentation()返回 true,但不会执行测试。有任何想法吗?

0 投票
1 回答
511 浏览

android - 在 ApplicationTestCase 的主线程上创建一个新的 Handler

在我的 Instrumentation Tests 中,我有一个基类,它extends ApplicationTestCase<TestApplication> TestApplication extends Application只是在onCreate().

在一个测试套件中,我正在测试一个通过new Handler();调用实例化新处理程序的类。这在应用程序中编译并运行良好,但是,在测试中总是失败:

java.lang.RuntimeException:无法在未调用 Looper.prepare() 的线程内创建处理程序

在 Application 类中,调用:

也无济于事,因为第一个测试运行良好,后续测试失败

java.lang.RuntimeException: 每个线程只能创建一个 Looper

并调用 this.getMainLooper().quit()or this.getMainLooper().quitSafely()inonTerminate()似乎相同的线程用于套件中运行的所有测试(也导致上述问题),因此由于在活动线程上退出 Looper 的问题,所有测试都会出错。

我可以通过使用静态布尔标志只运行一次 prepare() 来解决这个问题,但这看起来非常笨拙。我应该提交一个错误,还是代码中有什么地方做错了?

提前感谢帮助。

0 投票
3 回答
3013 浏览

android - uiautomator项目下如何使用Instrumentation?

我最近正在研究一个 uiautomator 项目,然后 UiObject.getFromParent 对我来说是一个错误的元素,我查看了 uiautomator 的源代码,发现答案是因为我使用的 UiSelector。

我发现 uiautomator 正在使用 Instrumentation 来获取 UI 元素的东西,就像:

我只想获得一个 AccessibilityNodeInfo 节点,就像 uiautomator 所做的那样,但 uiautomator 并没有公开这一点。

我正在尝试通过一个新类扩展 InstrumentationTestCase,getInstrumentation() 总是向我返回 null。

我在android 仪器测试用例上找到了答案 - getinstrumentation() 返回 需要的 nullinjectInstrumentation(InstrumentationRegistry.getInstrumentation()); 并告诉 InstrumentationRegistry 来自官方的 Android testing-support-lib:0.1

我已经下载了 Android Support Repository 并将 testing-support-lib-0.1-source.jar 导入到我的项目中,但我仍然看不到 InstrumentationRegistry。

有人知道我的演员阵容吗?

0 投票
3 回答
1575 浏览

android - Calabash-android:附加到正在运行的应用程序

我已将 calabash-android 设置为与默认场景完美配合(cucumber用于运行测试或calabash-android console进入 REPL 模式)。

但是,在某些情况下,能够附加到已经运行的应用程序是非常有用的。例如,我会在调试模式下启动一个应用程序并启动测试,以便能够设置断点并检查为什么某些功能在我的场景中不能按预期工作。

当谈到 iOS 上的 Calabash 时,这个任务非常简单:不需要额外的准备,因为应用程序从捆绑的测试服务器开始,我可以随时将 calabash 附加到它。但是,每次我尝试启动运行应用程序的葫芦时,Calabash Android 似乎都会强制退出该应用程序。

有什么办法吗?

编辑 看起来下面的答案并没有太大帮助,但我仍然希望有人(葫芦开发者,你在哪里?)有一天会偶然发现这一点。我花了一些时间自己发现了这个问题,这就是具体问题所在:

  1. 以调试模式启动应用程序(例如,使用 Xamarin)
  2. 开始calabash-android console PATH_TO_APK
  3. 尝试发出任何命令(例如query("*")) - 它失败并显示一条消息 KeepAliveDisconnected
  4. 尝试运行 start_test_server_in_background - 应用程序被终止并且调试会话被终止

深入研究细节后,我发现 start_test_server_in_background 实际上是作为检测后端运行shell am instrument的,sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner还有一堆其他标志描述了要检测的应用程序、要使用的端口等。

话虽如此,以下内容会有很大帮助:shell am instrument 是否可以附加到正在运行的应用程序

0 投票
0 回答
79 浏览

android - 将测试从 eclipse 导入到 android studio

我在 Eclipse 中有一个具有以下项目结构的 android 应用程序: Myapp -src -assets -res -libs -tests --res --src --assests --AndroidManifest.xml(这是用于测试)-AndroidManifest.xml(这是主要)

我能够将项目从 Eclipse 导入和构建到工作室。但是,无法将测试从 eclipse 导入到工作室。我在工作室中使用导入选项并指向具有清单文件的主项目“Myapp”。

我的 build.gradle 看起来像:

任何帮助如何修改 build.gradle 以便我可以在我的工作室中获取测试文件夹并使用 gradle 构建它?

0 投票
1 回答
1387 浏览

java - AndroidJUnitRunner 不在包中运行测试

只要我指定类,我就可以运行仪器测试。

我所有的仪器测试都位于com.application.instrumentation包中。当我尝试运行此包中的所有测试时,仪器无法找到任何测试。

同样AndroidStudio- 我能够在特定类而不是整个包中运行测试。

BaseActivityTest.java

AndroidStudio版本是1.2.2.

测试依赖:

可用仪器:

0 投票
1 回答
33 浏览

android - 将 InstrumentTest 用于自动调用 Intent 的 Activity

我正在开发一个使用 Skobbler SDK(AKA skmaps)的 Android 应用程序。我正在使用 InstrumentationTestRunner 来测试我的活动。我有两个扩展的测试类ActivityInstrumentationTestCase2<MyActivity>。但是我的第一个测试活动(MainActivity)已经调用了一个 Intent 以启动第二个活动(MapActivity)。所以它是一种SplashActivity。MainActivity 的测试在testPreconditions(). 如果我从 MainActivity 中删除 Intent,那么测试将继续运行。那么,如果 Activity 调用 Intent 而不会陷入无限循环,我该如何测试它的生命周期呢?

问候无限制101

0 投票
1 回答
251 浏览

java - 在带有 @UiThreadTest 注释的测试 setUp() 方法中查看异常

我遇到了一个问题,我试图在我的setUp()方法中更改 UI。

这是测试控制台:

我需要在setUp()触发将更新 UI 的副作用的方法中对我的应用程序进行一些更改。我认为添加@UiThreadTest 注释会导致它在主 ui 线程上运行。

我应该以不同的方式做到这一点吗?

0 投票
1 回答
344 浏览

android - 在 InstrumentationTestCase 中模拟

我尝试在我的仪器测试中模拟一个方法,但它失败了,我正在寻找解决它的解决方案。

崩溃发生在以下行:

我收到以下错误: