问题标签 [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.
android - 我很困惑何时使用仪器测试以及何时使用单元测试
现在有了 AndroidX 测试框架,我们可以使用 Robolectric 后端将 Espresso 测试作为单元测试运行。但是我很困惑何时使用仪器测试以及何时使用单元测试。
假设我们有两个屏幕,MovieListActivity和MovieDetailActivity。当我单击MovieListActivity中的某个项目时,该电影的详细信息将显示在MovieDetailActivity中。
现在在这种情况下,可能的单元测试可能是什么,可能的仪器测试可能是什么?
例如,我可以编写仪器测试
- 检查电影是否列出
- 点击电影进入详细画面
- 详细信息屏幕正确显示详细信息。
但是现在,这些测试也可以作为单元测试运行(因为我们使用的是 Android X 测试框架)而且速度更快,因为我们不在设备/模拟器中运行测试。那么是什么使测试符合仪器测试的条件?
如果我想同时运行单元测试和仪器测试怎么办?
由于我们使用的是 Android X 测试框架,因此可以通过将文件复制到文件夹来将相同的单元测试文件作为仪器测试运行androidTest
。这会造成重复文件,并使测试用例维护变得困难。(例如,如果我在单元test
文件夹中进行编辑,则应在androidTest
文件中进行相同的修改。)
- 有什么方法可以将测试标记为同时作为仪器测试和单元测试运行?
- 如果这是一种不好的做法,那么在使用 Android X 测试框架时应该考虑哪些最佳做法以及其他哪些最佳做法?
android - 使用 Robolectric 和 androidx.testing 测试 BottomSheetDialog 项目 click()
我正在尝试使用 androidx.test 和 Robolectric 测试 BottomSheetDialog,并在尝试单击对话框中的按钮时遇到问题。
我使用按钮单击打开对话框,然后我可以验证 BottomSheetDialog 中的按钮是否存在,但是单击失败并显示Caused by: java.lang.RuntimeException: Action will not be performed because the target view does not match one or more of the following constraints: at least 90 percent of the view's area is displayed to the user.
. 检查项目显示高度/宽度为 0。
我尝试设置固定大小并在单击显示工作表和单击工作表中的按钮之间休眠。我还尝试了一些不同的布局选项。
bottomsheet_view.xml
完整的堆栈跟踪:
android - AndroidX 测试 - ActivityScenario onView() 找不到嵌套的子片段
我有一个活动MyActivity
,它又包含一个片段MyFragment
。在MyFragment
我显示一个 BottomSheetDialogFragment 使用childFragmentManager
如下:
bottomSheetFragment.show(childFragmentManager, "BottomSheetFragment")
下面是我在 JVM 中运行的测试用例(使用 AndroidX 测试/Robolectric)。
上述测试用例因“androidx.test.espresso.NoMatchingViewException: No views in hierarchy found matching”而失败。但在 中scenario.onActivity {}
,我可以看到膨胀的 BottomSheet 片段。在调试时,我发现 BottomSheet 完全膨胀,因为它处于 Resumed 状态。
我的问题是:
Espresso.onView()
持有什么?当我检查视图层次结构时,我看到了 MyActivity 和 MyFragment,但没有看到 BottomSheet。是否无法使用 获取嵌套的子片段
Espresso.onView()
?Espresso.onView()
如何通过使用而不是查询来断言我的 BottomSheet 中是否存在视图scenario.onActivity
?
android - 库项目中的 Dagger2 + ActivityInjection + AndroidXTest/Espresso/RoboElectric
我正在研究 android 库模块,我想在我的模块中测试独立活动。我正在关注文章https://medium.com/androiddevelopers/write-once-run-everywhere-tests-on-android-88adb2ba20c5使用 roboelectric 和 androidx 测试与 espresso。我最近在我的图书馆项目中引入了 dagger 2。
这样我的 Activity 看起来像这样:
这工作得很好,我不希望底层应用程序使用 dagger 2。
现在我想在不依赖底层应用程序或应用程序类的情况下测试我的活动。如何在活动中注入模拟 ResourceProvider?
java - 为什么在整个测试过程中没有保持主要活动?
所以我在登录应用程序时遇到了一些问题。
我一直在尝试为它编写一个集成测试......
在哪里
那失败了
在checkUser
体内。所以我扔了一个
login_setsUser
作为...中的第一个声明
这也失败了,因为
现在事实上它并Success(DESTROYED)
没有DESTROYED
告诉我我无论如何都使用了错误的状态,但我更关心的是它确实在测试一开始就说DESTROYED
对了。
那么为什么活动被破坏了,我如何让它保持活力呢?
日志,不管它们值多少钱:
android - Android 问题:: 发现多个文件与操作系统无关路径 'androidsupportmultidexversion.txt' “错误”
我在编译我的项目时遇到了这个问题我为此尝试了一些解决方案,那就是
发现多个文件具有独立于操作系统的路径“META-INF/LICENSE”
在 gradle:3.0.0 上找到多个文件,其独立于操作系统的路径为“META-INF/ASL2.0”
错误:发现多个文件具有独立于操作系统的路径“META-INF/DEPENDENCIES”
'在与操作系统无关的路径 project.properties 中发现了多个文件' android 中的错误
Gradle 错误:发现多个文件与操作系统无关路径 'META-INF/androidx.localbroadcastmanager_localbroadcastmanager.version'
https://dorbae.github.io/android/troubleshooting/Android-Troubleshooting-Morethanonemetainf/
https://github.com/Nexmo/nexmo-java/issues/128
但是对我没有任何帮助,有人知道如何解决这个问题吗?
android - java.lang.NoClassDefFoundError:测试模块无法解析其他功能模块的类,单元测试 - Kotlin - Android
我有以下项目结构:
其中 Testkit 具有所有依赖项,包括 app 和 featureModules。Testkit 包括与应用程序和功能模块中的功能相关的所有单元测试。
当我从 Android Studio 运行单元测试时(右键单击-> 在 Testkit 中运行测试),它们运行良好。但是,每当我尝试从 gradle command: 运行它时./gradlew TestKit:testInternalDebugUnitTest
,它都会抛出NoClassDefFoundError
其他模块的所有依赖项(对于应用程序和功能模块)。
此外,我已经在测试模块中添加了所有模块的实现和 testImplementation 依赖项。
请建议:
我是否需要添加在其他模块中生成的类的路径,如果是,请指导在哪里。
运行覆盖率测试也失败了
java.lang.VerifyError:错误的返回类型
请建议我在这里做错了什么。
注意: 我创建了一个测试套件,因为 Roboelectric 在功能模块中存在多个未解决的问题,例如:https ://github.com/robolectric/robolectric/issues/5428
版本 AS:4.0.1 gradle:4.0.1 gradle-wrapper:6.5 Robolectric:4.3.1
android - DialogFragment的FragmentScenario,onCreateDialog未调用
我想使用androidx.fragment:fragment-testing
lib 测试 DialogFragment。我调用launchFragmentInContainer
and moveToState(Lifecycle.State.RESUMED)
,但onCreateDialog
在这个片段中没有调用。
我调试了应用程序,并确保onCreateDialog
调用早于onResume
,但在此测试场景onCreateDialog
中未调用,因此fragment.dialog
为 null。
我应该调用什么FragmentScenario
来创建我的对话框?
android - 无法解析 androidx 上的符号“ActivityTestRule”
我正在尝试测试我的 Activity,但无法导入 ActivityTestRule。
我的毕业档案
编辑 我也尝试过 ActivityScenarioRule。同样的问题,无法解决符号 ActivityScenarioRule
android - Android单元测试问题:没有注册仪器!必须在注册仪器下运行
我遵循了 Android Developer文档并尝试在 Android 项目中进行简单的单元测试。
但我尝试运行单元测试,ApplicationProvider.getApplicationContext<Context>()
但出现异常:
java.lang.IllegalStateException:未注册检测!必须在注册仪器下运行。
看起来我没有注册仪器。但是医生没有提到任何关于此的事情。
如果我确实实现了 Robolectric 库并使用它,它工作正常@RunWith(Robolectrictestrunner::class.java)
(而且我需要在第一次运行时忍受长时间的设置。)。但这很奇怪,因为文档说在 androidx.test:core 中包含 Robolectric 环境
我想知道是否缺少一些设置或其他正确的方法来使用 SparseArray 之类的东西进行单元测试,或者其他东西属于 Android SDK。
这是我的build.gradle:</p>