问题标签 [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.
java - app:transformClassesWithMultidexlistForDebugAndroidTest 运行仪器测试时出错
我正在尝试将手指放在android功能测试中。制作第一个简单的应用程序测试用例如下:
- 我只是左键单击运行它,然后单击绿色箭头“运行应用程序”
- 我选择了“调试”变体
- 以及测试神器“Android Instrumental Test”
- 我有“Geny Motion”,想用它运行测试。
Gradle 同步良好
=> 但我运行测试用例,最后出现以下错误:
:app:transformClassesWithMultidexlistForDebugAndroidTest FAILED 错误:任务 ':app:transformClassesWithMultidexlistForDebugAndroidTest' 执行失败。com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:处理'命令'/Library/Java/JavaVirtualMachines/jdk1.7.0_75。 jdk/Contents/Home/bin/java'' 以非零退出值 1 结束
这是我的应用程序 gradle 文件:
这是项目 gradle 文件:
我环顾四周,但很难看出它可能是什么。
android - 如何在 attach() 中更改活动标题
我想运行具有不同语言环境的参数化仪器测试,以使用所有支持的语言运行相同的测试。
观察到的行为是该活动将具有第一次测试运行的本地化标题,也适用于随后的每次运行。因此,无论我的手机使用哪种语言,标题都会在第一次参数化测试运行时正确本地化,并且对于接下来的每个测试运行仍然相同。
虽然覆盖语言环境本身适用于任何资源,但如果由.AndroidManifest.xml
活动似乎在 中设置了它们的标题attach
,并且任何调用 attach 似乎都将标题缓存在应用程序首次启动的语言环境中。
由于资源总是得到正确本地化,解决方法是调用setTitle(R.string.title)
或只是getActionBar().setTitle(R.string.setTitle)
,但我不想仅仅为了测试目的而更改活动。
问题:如何在第一次测试运行后更改启动活动的标题?如上所述,这似乎被缓存并且没有正确更新,并且杀死应用程序以重新启动它会使检测测试失败。
测试设置
整个测试项目可以在 GitHub 上找到(Localization.java
包含当前失败的单元测试以及此处描述的问题),并且将参数化单元测试与UIAutomator
.
目标是在不太了解应用程序本身(UIAutomator)的情况下拍摄一批屏幕截图,并且也不必为测试修改应用程序。
更改语言环境:
我在每次测试之前成功地更改了语言环境,并且通过执行以下操作正确显示了我的文本,而且我有多个断言确保资源实际上是正确的语言环境。
什么不起作用:
我显然尝试在目标上下文、应用程序上下文和活动上以相同的方式设置语言环境(无论如何这可能为时已晚)。
我看到它attach
是从 调用的Instrumentation
,但只是创建一个新应用程序并尝试启动该活动也不会本地化标题。
android - 如何运行单个 android 仪器测试用例?
不是单元测试,而是仪器测试。
我的应用程序有多种风格,所以我运行:
./gradlew connectedClientDebugAndroidTest
运行我的仪器测试(风味名称是client)。
但我想运行一个名为MyActivityTestCase.java
. 这可能吗?如果是运行它的命令是什么
android - 在 AndroidManifest 元数据中指定自定义 RunListener 不起作用
目标
在RunListener
使用 Espresso 运行 Android 仪器测试时,自定义对测试失败执行自定义操作。
tl;博士
InstrumentationInfo.metaData
是null
,即使ApplicationInfo.metaData
有我的信息。为什么?
迄今为止的进展
我可以让我的 RunListener 使用以下 adb 命令:
这在此处的 AndroidJUnitRunner 文档中指定。
但是,该文档还指出,可以在AndroidManifest.xml
元数据元素中指定 RunListener。到目前为止,我还没有成功地让它发挥作用。
AndroidManifest.xml
<application>
我在我的元素中添加了以下内容main/AndroidManifest.xml
:
这没有任何效果。通过各种方式,我发现这些代码行(由清单使用AndroidJUnitRunner
并RunnerArgs
从清单中获取自定义元数据参数)
...给我一个null
捆绑包。
我注意到生成的debug/AndroidManifest.xml
没有我的元数据标签,所以,作为一个实验,我也将它添加到我的androidTest/AndroidManifest.xml
文件中。看起来像这样:
...然后出现在生成的debug/AndroidManifest.xml
像这样:
这也没有任何效果。
另一个实验
我创建了一个名为的自定义测试CustomAndroidJUnitRunner
运行器,它扩展了 AndroidJUnitRunner,只是为了在引擎盖下达到峰值。如果我这样做:
...logcat 会说:
所以,ApplicationInfo.metaData
有了。为什么不InstrumentationInfo.metaData
呢?
android - Espresso Instrumentation 测试 - 如何在测试后卸载或删除应用程序
我设置了 Espresso 仪器框架来运行我的 Android 功能自动化测试。对于每次测试,我都想在完成测试后登录应用程序并删除应用程序。
所以,我设置如下:
公共类 FirstSampleTest 扩展 BaseTest {
// 私有 final ElementUtils elementUtils;
android - 拖放浓缩咖啡
是否可以通过 Espresso 执行拖放操作?我需要向下移动一个视图(直线)以便在我的自动化测试中接受一些条件。
android - 适用于 Android 的参数化检测测试
AndroidJUnit4 和 Parameterized 测试的答案链接到 Google 示例以使用@RunWith(Parameterized.class)
. 但是,这是一个简单的单元测试。如何运行参数化检测测试?
android - 由于“android.content.res.Resources$NotFoundException”,检测运行失败
我尝试在 Android Studio 1.5.1 中使用 espresso 2.2.1 运行测试。当我运行 LoginActivityTest 时,我收到此错误:“android.content.res.Resources$NotFoundException”在 LoginActivity 调用 MyService.java 并且 MyService 需要整数资源(即 R.integer.number_of_days)时引起。此资源在 gradle(版本 1.5.0)模块的 R.integer.xml 文件中定义。
项目结构:
RootFolder/
├----projectA/
│ ├----build.gradle
│ ├----settings.gradle
│ └----src/androidTest/java/.../LoginActivityTest
│ └----src/main/java/.../LoginActivity
│
└----Module/
├----krill/
│ └----build.gradle
│ ├----settings.gradle
│ └----src/main/
| └----java/service/MyService.java
| └----res/value/integers.xml
│
└----otherModule/
└----build.gradle
我的测试课:
错误堆栈跟踪:
我该如何解决这个问题?
android - 是否可以在 Android 中使用 Espresso 进行端到端测试?
在过去的一周里,我一直在寻找有关 Android 端到端测试的有用信息。虽然我找到了 UI Automator,但它并没有引起我的注意。
我正在开发一个应用程序,它的快乐路径包含 6 个活动。我想在主屏幕中创建我的 Booking 对象并将其移动到快乐的路径以检查其状态。我想我可以用MockWebServer模拟服务器响应。我看到的所有样本都在一次测试一项活动。
所以我的问题是我能够在一次测试中测试所有这些活动(快乐路径)吗?如果是,是否有任何样本?
android - android.support.test.espresso.NoActivityResumedException:RESUMED阶段没有活动
我正在尝试为我的活动编写测试用例。我有几项活动,其中一项活动没有问题,而当我尝试对其他ActivityTest
类运行测试时出现以下错误。
android.support.test.espresso.NoActivityResumedException:RESUMED阶段没有活动。您是否忘记启动活动。(test.getActivity() 或类似的)?
这是我的所有测试用例都失败的课程:
然而,这是我的另一个类,它的所有测试用例都通过了:
我不知道为什么上述类的测试通过而其他类失败。