android - RxIdler 不会等到网络请求完成
问题描述
这是我要测试的方法:
@Test
fun shouldBeAbleToScrollViewAndDisplayRuleDetails() {
onView(withId(R.id.recyclerView)).perform(RecyclerViewActions
.actionOnItemAtPosition<MainAdapter.SavingsGoalViewHolder>(5, click()))
onView(withText(R.string.your_rules)).check(matches(isDisplayed()))
}
我收到以下异常:
at dalvik.system.VMStack.getThreadStackTrace(Native Method)
at java.lang.Thread.getStackTrace(Thread.java:1736)
at androidx.test.espresso.base.DefaultFailureHandler.getUserFriendlyError(DefaultFailureHandler.java:88)
at androidx.test.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.java:51)
at androidx.test.espresso.ViewInteraction.waitForAndHandleInteractionResults(ViewInteraction.java:314)
at androidx.test.espresso.ViewInteraction.check(ViewInteraction.java:297)
at com.sample.android.qapital.TestMainActivity.shouldBeAbleToScrollViewAndDisplayRuleDetails(TestMainActivity.kt:38)
at java.lang.reflect.Method.invoke(Native Method)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at androidx.test.rule.ActivityTestRule$ActivityStatement.evaluate(ActivityTestRule.java:531)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at androidx.test.ext.junit.runners.AndroidJUnit4.run(AndroidJUnit4.java:104)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:56)
at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:388)
at com.sample.android.qapital.AppTestRunner.onStart(AppTestRunner.kt:18)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2205)
Caused by: junit.framework.AssertionFailedError: 'is displayed on the screen to the user' doesn't match the selected view.
Expected: is displayed on the screen to the user
Got: "AppCompatTextView{id=-1, visibility=VISIBLE, width=0, height=0, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=true, is-selected=false, layout-params=android.widget.LinearLayout$LayoutParams@52b82ea, tag=null, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, text=Your\nRules, input-type=0, ime-target=false, has-links=false}"
at androidx.test.espresso.matcher.ViewMatchers.assertThat(ViewMatchers.java:539)
at androidx.test.espresso.assertion.ViewAssertions$MatchesViewAssertion.check(ViewAssertions.java:103)
at androidx.test.espresso.ViewInteraction$SingleExecutionViewAssertion.check(ViewInteraction.java:415)
at androidx.test.espresso.ViewInteraction$2.call(ViewInteraction.java:279)
at androidx.test.espresso.ViewInteraction$2.call(ViewInteraction.java:265)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
似乎 RxIdler 没有按预期等待。我在类似的项目中使用过 RxIdler,它似乎有效。
这是我的项目的源代码:https ://github.com/AliRezaeiii/SavingGoals-Cache
解决方案
推荐阅读
- python - 显示带有线性回归 sklearn 的图
- node.js - Jupyter labextension install @jupyterlab/toc 返回错误:Jupyterlab 构建失败
- javascript - 使用 PIXI JS 在我的画布中未显示图像精灵
- javascript - Lodash 从嵌套对象中提取值
- symfony - 使用 Symfony Monolog 向微软团队发送消息
- api-platform.com - 两台防火墙共用同一个型号
- r - R中的randomForest中使用了哪种决策树算法?
- triggers - 是否可以为拉取请求仅触发一次 Github 工作流?
- arrays - 如果单元格只有数字值,如何将数据获取到其他工作表
- python - Python 使用回溯存储并引发最后一个异常