问题标签 [instrumented-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 - 通过使用 FragmentScenario 停止和恢复来测试 androidx.fragment 生命周期,onCreateView() 调用了两次,但此错误已在 1.3.1 中修复
我正在为我的应用程序使用androidx.fragment:fragment-testing
. 测试用例之一是检查所有底层逻辑在 Fragment 停止和恢复时是否正确运行,以模拟应用程序被最小化(主页按钮)并再次返回。这些测试利用FragmentScenario.moveToState()
. 首先,我使用 编写了我的测试androidx.fragment:fragment-testing:1.2.5
,它们都通过了。但是当我更新androidx.fragment:fragment-testing
到时1.3.1
,上述测试开始失败。
我检查了哪里出了问题,结果发现Fragment.onCreateView()
在生命周期更改期间再次调用它,即使它不应该(在返回CREATED
和返回的情况下RESUMED
),导致视图“重置”到布局中声明的初始状态。我查了一下,发现了一个错误,描述中提到“onCreateView() 生命周期方法被调用了两次” https://issuetracker.google.com/issues/143915710(它也在https://medium.com/androiddevelopers中提到/fragments-rebuilding-the-internals-61913f8bf48e)。问题是它已经在 Fragment 1.3.0-alpha08 中修复,所以它不应该在 1.3.1 中发生。这意味着我的项目配置一定有问题。
这是重现该问题的示例代码。它表明视图不会保留其文本,也不会保留生命周期更改 RESUMED -> CREATED -> RESUMED 的可见性。手动测试不会重现此问题,它只会影响仪器测试。
由于我没有androidx.fragment:fragment
直接声明,它是一个传递依赖,所以我想知道它是否可能被解析为小于 8 的 1.3.0-alpha,因此不包含修复。我添加了依赖约束以确保解决 1.3.1
但它没有帮助,所以情况并非如此
我的代码还有什么问题(很可能是 gradle 依赖项)?
android - 尝试在 Android Studio 的 Firebase 测试实验室上执行检测的 android 测试时,弹出“找不到应用程序的 Apk”的提示
这是我拥有的模块的 build.gradle 文件。
- 我在 Firebase 控制台中创建了一个 android 项目,并按照步骤在 firebase 云中注册我的 android 应用程序以对其进行测试。
- 根据google的文档,我在android studio中创建了测试配置,并将Firebase测试实验室作为目标,并将firebase的android项目创建为云项目。
- 当我尝试运行配置时,如下所示。
- 有谁知道这个问题的解决方案?,将不胜感激。我应用了一些从有用的链接中得到的提示,比如断开 VPN。
- 我还尝试将应用程序 apk 和测试 apk 上传到 Firebase 测试实验室控制台,但在执行测试后,像这样通过 - 0、失败 - 0 和忽略 - 0。
android - Android 获取 R8 错误:尝试使用缩小版本运行 UI 测试时已经有映射
我希望能够在缩小版本上运行 UI 测试。但是,当我跑步时
我收到此错误:
我尝试为测试创建一个单独的 proguard 文件:
但这没有帮助。不知道还有什么可以尝试的。
android - 我们能否在仪器测试中测试静态广播接收器或广播接收器应仅在单元测试中测试
我是 Android 及其仪器测试的新手
我在我的 android 清单中注册了一个广播接收器,例如
和 PhoneCallReceiver 类如下
我想测试通话结束时是否在仪表测试中显示添加通话日志弹出页面,我尝试使用以下意图模拟通话结束
我的仪器测试就像
我也尝试过 InstrumentationRegistry.getInstrumentation().getContext().sendBroadcast(intent); 也
但它也没有工作
知道如何在仪器测试中模拟呼叫或如何在仪器测试中测试广播接收器吗?
还是广播接收器只能在单元情况下进行测试?
android - ":app" 和 ":dynamicfeature" 的 "com.android.test" 模块失败并显示 "Collection has more than one element." :“testedApplicationId”
我尝试(在示例应用程序中)让一个“ :test ”模块测试主模块“ :app ”和“ :dynamicfeature ”模块。为此,我使用“com.android.test”gradle 插件。
我的“ :app ”模块运行良好。它从我的“ :dynamicmodule ”中实例化了一个基本视图。
不幸的是,我的“ :test ”模块在“processDebugManifest”期间失败了。
错误是:
无法计算任务 ':test:processDebugManifest' 属性 'testedApplicationId' 的值。
集合有不止一个元素。
事实上,似乎测试模块不接受实现“com.android.application”模块和“com.android.dynamic-feature”模块
任何想法?谢谢
这是我的 build.gradle (:test)
这是我的 build.gradle (:app)
这是我的 build.gradle (:dynamicfeature)
android - 在我的测试模块中提供 HiltTestApplication 作为依赖项失败
我已遵循本指南并尝试使用 HILT 运行检测测试。但在我的测试模块中提供HiltTestApplication作为依赖项时失败了。下面是我的模块类-
得到以下错误-
C:\Users\bhuvn\AndroidStudioProjects\Dairy\app\build\generated\source\kapt\debugAndroidTest\com\bhuvnesh\diary\framework\dataSource\cache\RecipeDaoServiceTests_HiltComponents.java:128:错误:[Dagger/MissingBinding] 匕首。如果没有 @Inject 构造函数或 @Provides-annotated 方法,则无法提供 hilt.android.testing.HiltTestApplication。
公共抽象静态类 SingletonC 实现 RecipeDaoServiceTests_GeneratedInjector,^ dagger.hilt.android.testing.HiltTestApplication 在 com.bhuvnesh.diary.di.TestModule.provideRecipeDataFactory(application, �) com.bhuvnesh.diary.framework.dataSource.data.RecipesDataFactory 注入在 com.bhuvnesh.diary.framework.dataSource.cache.RecipeDaoServiceTests.recipeDataFactory 注入 com.bhuvnesh.diary.framework.dataSource.cache.RecipeDaoServiceTests 在 com.bhuvnesh.diary.framework.dataSource.cache.RecipeDaoServiceTests_GeneratedInjector.injectTest( com.bhuvnesh.diary.framework.dataSource.cache.RecipeDaoServiceTests) 它也在以下位置请求:com.bhuvnesh.diary.di.TestModule.provideRecipeDb(app)
我还尝试通过在同一模块中手动提供依赖项使用-
但它提供了一个导致 nullpointerexception 的 null 对象。
android - Android UI 测试 - ActivityScenarioRule 比 ActivityScenario 慢得多
我正在进入 Android UI 测试,我学会了两种启动活动的方法:ActivityScenario
在每个测试中,ActivityScenarioRule
一次,用@Rule
.
一开始我用过ActivityScenario
,成功了。每个测试大约需要 2-4秒才能完成:
然后我决定切换到ActivityScenarioRule
,因为我编写了相当多的测试,并且根据规则,我不需要ActivityScenario
为每个测试创建一个:
如果我使用这条规则运行测试,每个测试大约需要40-50 秒,并且大部分时间都花在了这个屏幕上:
测试在模拟器上运行。我不知道这个屏幕是什么,为什么在使用时会占用这么多时间ActivityScenarioRule
。在每次测试中使用ActivityScenario
时,此屏幕不会显示并且测试完成速度很快。请帮忙,我错过了什么?
android - 在 REAL DEVICE 上启动仪器测试会导致等待进程出现超时 - MacBook Air M1
我遇到了超时错误,在阅读了 Stack Overflow 上的所有主题后,我找不到解决问题的方法。
我正在尝试在真实设备上从 Android Studio(最新版本)启动仪器测试(我尝试了不同的设备,它似乎与设备无关)
我尝试启动的测试已由 Espresso 测试记录器自动生成。只有测试产生超时,我可以正常启动应用程序。
我正在使用最新版本的 Android Studio 上的 MacBook Air M1,如果它有所作为的话。但是由于我试图在真实设备上运行测试,所以这应该不是问题……对吧?这里有人遇到过这种问题吗?
已经尝试插拔手机,缓存无效/重启;由于我在 M1 Mac 上,因此无法尝试在模拟器上启动...
android - 在 Android 中运行检测测试时如何捕获活动中的错误?
我有一个活动SomeActivity
。为了正常工作,它需要一个 id。这个 id 在 Intent 中传递。
SomeActivity
在其onCreate
-Method 中检索 Intent 中的 id。如果它为空,它会抛出一个错误(这会使 Activity 崩溃)。
我想使用仪器测试来测试这种行为。到目前为止我的代码:
SomeActivity.kt
仪表化测试:SomeActivityInstrumentedTest.kt
我从来没有发现错误,测试只是崩溃了。有什么方法可以捕捉到这个错误吗?
integration-testing - 测试 WorkManager - RUNNING 而不是 ENQUEUED
我正在关注这个例子,但我的测试失败了,因为workInfo.state
isRUNNING
而不是ENQUEUED
. 有谁知道可能是什么问题?如果我应该提供更多代码/上下文,请告诉我。