Android:Espresso 不会等到显示片段或 activity,所以每个测试都失败了

Android: Espresso doesn't wait until fragment or activity is shown so every test failed

我知道有很多关于此的问题,但我找不到任何可以帮助我的东西:(

我尝试使用 Espresso 为 android 应用程序生成 UI-Test。在克服依赖性问题后(因为某些库作为其他库的依赖性在不同版本中包含两次)我仍然无法创建工作测试...

我知道 IdlingResource,但正如我所读,espresso 开箱即用,直到主线程和 AsyncTaskPool 在 运行 任何测试之前处于空闲状态。

为了接触它,我创建了一个简单的应用程序,其中包含两个活动,一个闪屏和一个主要活动。 在开始 mainActivity

之前,启动画面包含类似这样的等待三秒的内容
 new Handler().postDelayed(new Runnable() {
   @Override
   public void run() {
     finish();
     Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class);
     startActivity(intent);
   }
 }, 3000);

我也尝试为此使用 AsyncTask,但似乎没有什么能正常工作,因为每个测试都失败了。

该测试仅检查包含定义文本的 TextView 是否通过以下方式显示在视图上:

onView(withText("DummyText")).check(matches(notNullValue()));

我认为创建一个简单的测试不会那么困难...

因为我要针对 api>=16 进行测试,所以我需要浓缩咖啡。就我而言,我使用 uiAutomator 检查了它(我知道它适用于 api >=18)但是有等待显示内容的智能逻辑......并且完美地工作......

你的activity规则是什么?因为如果是 SplashScreenActivity,测试将立即开始,如果视图不在启动屏幕上,onView 将失败。 尝试直接打开 MainActivity,以测试该视图。 我使用 Espresso 有一段时间了,我知道 @Test 方法在定义为 ActivityTestRule 的 activity 完成加载时启动。

希望这对您有所帮助。

祝你好运!