Android:Espresso不会等到片段或活动显示,因此每次测试都失败

时间:2016-02-17 10:45:04

标签: android testing automated-tests android-espresso android-uiautomator

我知道围绕这个有很多问题,但我找不到任何可以帮助我的事情:(

我尝试使用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)但是有一些聪明的逻辑可以等待某些东西显示.....并且完美地工作......

1 个答案:

答案 0 :(得分:6)

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

希望这有帮助。

祝你好运!