问题标签 [androidx-test]

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 投票
3 回答
6820 浏览

android - Android 测试编排器不适用于 Android X

我最近迁移了我的项目以使用 AndroidX,并使用以下文档为我在 gradle 上的 espresso 测试配置了测试协调器:

https://developer.android.com/training/testing/junit-runner#using-android-test-orchestrator

我有依赖:

但是,我的任何测试都没有执行,并且在运行 gradle 运行以下 adb shell 命令时看起来它们失败了,即:

从上面看:似乎它正在尝试使用 android 支持版本而不是 androidx 版本执行此命令。

它似乎没有在任何地方记录用于 androidx 的内容。

0 投票
0 回答
49 浏览

android - 未解决的参考 - 发生了什么?

我试图在 UI 测试“androidTest”中引用一个 Activity,它是我的主项目文件夹的一部分,但是,我不断收到错误“未解析的引用”。当我检查发生了什么时,看起来我的导入正在尝试引用“测试”文件夹而不是“主”文件夹......

例如。在我的 src/ 我有:-

/androidTest

/主要的

/测试

就好像 /androidTest 正在我的 /test 文件夹而不是 /main 文件夹中寻找对活动的引用。

知道为什么会这样吗?

0 投票
3 回答
1259 浏览

android - 使用自定义运行器时未找到测试

androidx.test在我的项目中使用库(我最近迁移到)并使用 custom AndroidJUnitRunner。在迁移之前一切正常,但现在我收到了这个错误 -

Started running tests Test running failed: Instrumentation run failed due to 'Process crashed.' Empty test suite.

我使用的自定义运行器类扩展自androidx.test.runner.AndroidJUnitRunner

在我的应用程序build.gradle文件中,我有以下设置 -

testInstrumentationRunner "com.example.CustomTestRunner"

有依赖关系 -

androidTestImplementation "androidx.test.ext:junit:1.1.0" androidTestImplementation 'androidx.test:runner:1.1.1' androidTestImplementation 'androidx.test:core:1.1.0' androidTestImplementation "androidx.test:rules:1.1.1"

我所有的测试课程都有@RunWith(androidx.test.ext.junit.runners.AndroidJUnit4.class)

我被困在这一点上。任何帮助,将不胜感激。谢谢。

0 投票
1 回答
5548 浏览

android - Robolectric AndroidX 片段 NoClassDefFoundError

将代码和测试迁移到AndroidX 后,一切似乎都运行良好,但是由于NoClassDefFoundError: androidx/fragment/testing/R$style异常,两个片段的 Robolectric junit 测试失败。堆栈跟踪:

java.lang.NoClassDefFoundError: androidx/fragment/testing/R$style at androidx.fragment.app.testing.FragmentScenario$EmptyFragmentActivity.onCreate(FragmentScenario.java:79) at android.app.Activity.performCreate(Activity.java:5933 ) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 在 androidx.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:674) 在 org.robolectric.android.controller.ActivityController.lambda$create$0(ActivityController .java:69) 在 org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:365) 在 org.robolectric.android.controller.ActivityController.create(ActivityController.java:69) 在 org.robolectric.android.controller。 org.robolectric.android 上的 ActivityController.create(ActivityController.java:74)。internal.LocalActivityInvoker.startActivity(LocalActivityInvoker.java:39) 在 androidx.test.core.app.ActivityScenario.launch(ActivityScenario.java:207) 在 androidx.fragment.app.testing.FragmentScenario.internalLaunch(FragmentScenario.java:283)在 androidx.fragment.app.testing.FragmentScenario.launchInContainer(FragmentScenario.java:265)

为了测试片段,我正在使用 FragmentScenario,似乎 FragmentScenario.EmptyFragmentActivity 指的是包 androidx.fragment.testing.R 中缺少的 R 类:

setTheme(getIntent().getIntExtra(THEME_EXTRAS_BUNDLE_KEY, R.style.FragmentScenarioEmptyFragmentActivityTheme));

知道可能出了什么问题吗?也许我错过了一个对我来说并不那么明显的依赖。

可在以下项目中重现: https ://github.com/marcinbak/androidx-test-error

也在 Google 的问题跟踪器中报告:https ://issuetracker.google.com/issues/122321150

0 投票
2 回答
2833 浏览

android - 如何对startActivity进行单元测试?

我是android测试的新手。请帮我为这门课写一个单元测试。

测试文件夹中的单元测试类

错误 :

0 投票
1 回答
922 浏览

android - AndroidX 测试对话框

自 AndroidX 发布以来,我们在单元测试中使用 Robolectric 和 Espresso。但是我们无法找到测试对话的方法。Espresso 社区建议我们这样做:

但是这里的测试异常失败

调试代码时,我们发现找到了对话框,但不知何故decorView.hasWindowFocus()返回 false。

是因为 Robolectric 中的一些错误导致视图无法获得窗口焦点吗?有没有办法解决它?目前,我们正在求助于 Robolectric 阴影。

我们正在使用Robolectric 4.2AndroidX test 1.1.0版本

更新: 显然在显示对话框后,活动保持窗口焦点,所以它很可能是 Robolectric 错误(或我的误解)。

0 投票
0 回答
491 浏览

robolectric - 如何使用 AndroidX 片段测试来测试选项菜单?

设置

  • 机器人电动车:4.2.1
  • AndroidX 片段测试:1.1.0-alpha05

背景

AndroidX 带来了测试片段的新方法:

来源: https ://developer.android.com/training/basics/fragments/testing

Robolectric 与 AndroidX 兼容,并打算弃用反映 AndroidX 功能的功能。

来源: http ://robolectric.org/androidx_test/

但是在 Robolectric 中,您可以测试选项菜单的行为,例如使用类似这样的东西(我知道它看起来很混乱,但 FragmentController 在某些情况下不能很好地工作):

在 AndroidX 中执行类似操作(不使用 espresso)的 API 是什么?该RoboMenu构造似乎不适用于 AndroidX,这不起作用:

0 投票
1 回答
2736 浏览

java - 如何为 AndroidX 测试配置 Android 项目

我在配置我的 Android 应用程序以使用 AndroidX 进行测试时遇到困难。

当我尝试运行初始测试时,出现此错误:-

我的 gradle 类似于:-

我尝试执行的测试类似于:-

我究竟做错了什么?

如何解决 gradle 依赖问题?

我已经按照这个链接显示了配置 AndroidX 进行测试

当我更改我的应用程序 gradle 以明确包含番石榴时

依赖性问题更改为以下内容:-

0 投票
1 回答
2570 浏览

android - 添加 androidx.fragment:fragment-testing 依赖项后,AndroidTests 停止构建

在我将fragment-testing依赖项添加到我的项目后:

当我尝试构建androidTests它失败时:

FAILURE:构建失败并出现异常。

出了什么问题:无法确定任务“:MyApp:mergeEsmartliveDebugAndroidTestResources”的依赖关系。

无法解析配置“:MyApp:esmartliveDebugAndroidTestRuntimeClasspath”的所有任务依赖项。无法解析 androidx.test:core:1.1.0。要求:项目:MyApp 项目:MyApp > androidx.test.ext:junit:1.1.0 项目:MyApp > androidx.fragment:fragment-testing:1.1.0-alpha09 找不到'androidx.test:core'的版本满足版本约束: 依赖路径 'MyApp:unspecified' --> 'androidx.test:core:1.1.0' 约束路径 'MyApp:unspecified' --> 'androidx.test:core:{strictly 1.1.0} ' 因为以下原因:esmartliveDebugRuntimeClasspath 使用版本 1.1.0 依赖路径 'MyApp:unspecified' --> 'androidx.test.ext:junit:1.1.0' --> '

无法解析 androidx.test:core:{strictly 1.1.0}。要求:项目:MyApp 找不到满足版本约束的“androidx.test:core”版本:依赖路径“MyApp:unspecified”->“androidx.test:core:1.1.0”约束路径“MyApp: unspecified' --> 'androidx.test:core:{strictly 1.1.0}' 因为以下原因:esmartliveDebugRuntimeClasspath 使用版本 1.1.0 依赖路径 'MyApp:unspecified' --> 'androidx.test.ext:junit: 1.1.0' --> 'androidx.test:core:1.1.0' 依赖路径 'MyApp:unspecified' --> 'androidx.test.espresso:espresso-intents:3.2.0-beta01' --> 'androidx .test:core:1.2.0-beta01' 依赖路径'MyApp:

无法解析 androidx.test:monitor:1.1.1。要求:项目:MyApp > androidx.test.ext:junit:1.1.0 找不到满足版本约束的“androidx.test:monitor”版本:依赖路径“MyApp:unspecified”->“androidx.test” .ext:junit:1.1.0' --> 'androidx.test:monitor:1.1.1' 依赖路径 'MyApp:unspecified' --> 'androidx.test:runner:1.2.0-beta01' --> ' androidx.test:monitor:1.2.0-beta01' 依赖路径 'MyApp:unspecified' --> 'androidx.test:core:1.2.0-beta01' --> 'androidx.test:monitor:1.2.0-beta01 '

无法解析 androidx.test:core:1.2.0-beta01。要求:项目:MyApp > androidx.test.espresso:espresso-intents:3.2.0-beta01 找不到满足版本约束的“androidx.test:core”版本:依赖路径“MyApp:unspecified”--> 'androidx.test:core:1.1.0' 约束路径 'MyApp:unspecified' --> 'androidx.test:core:{strictly 1.1.0}' 因为以下原因:esmartliveDebugRuntimeClasspath 使用版本 1.1.0 依赖路径' MyApp:unspecified' --> 'androidx.test.ext:junit:1.1.0' --> 'androidx.test:core:1.1.0' 依赖路径 'MyApp:unspecified' --> 'androidx.test.espresso :espresso-intents:3.2.0-beta01' --> 'androidx.test:core:1.2.

无法解析 androidx.test:monitor:1.2.0-beta01。要求:项目:MyApp > androidx.test:runner:1.2.0-beta01 项目:MyApp > androidx.test:core:1.2.0-beta01 找不到满足版本约束的“androidx.test:monitor”版本: 依赖路径 'MyApp:unspecified' --> 'androidx.test.ext:junit:1.1.0' --> 'androidx.test:monitor:1.1.1' 依赖路径 'MyApp:unspecified' --> 'androidx .test:runner:1.2.0-beta01' --> 'androidx.test:monitor:1.2.0-beta01' 依赖路径'MyApp:unspecified' --> 'androidx.test:core:1.2.0-beta01' --> 'androidx.test:monitor:1.2.0-beta01'

不知道如何处理这种冲突......有人有同样的问题吗?

0 投票
1 回答
205 浏览

android - androidx.test.annotation 包位于哪个 AndroidX 库中?

简单的问题:

如何使用 androidx.test.annotation 包?它位于哪个 AndroidX 库中?我特别想使用androidx.test.annotation.UiThreadTest。这个注解是 android.support.test.annotation.UiThreadTest 从 pre-AndroidX 时代的延续。

此软件包未在AndroidX 迁移页面上列出。它是否包含在另一个库中?如果有,是哪一个?我一辈子都找不到它。IDE 中的包搜索一无所获。