禁用动画不允许正确运行Espresso测试

时间:2016-09-11 17:09:12

标签: android android-espresso

使用Espresso进行Android测试时,建议禁用与动画相关的三个选项。假设通过这样做我们将阻止主线程绘制动画,线程将在我们期望他时变为空闲并且测试不会停在以下行:

 progressBar.setVisibility(VISIBLE);

但邪恶的事实是,它不起作用!

我在设备的开发者选项中将window animation scaletransition animation scaleanimator duration scale设置为off。然后我运行我的测试:

@RunWith(AndroidJUnit4.class)
public class ExchangeRatesActivityTest {

  @Rule
  public ActivityTestRule<ExchangeRatesActivity> mActivityRule = new ActivityTestRule<>(
        ExchangeRatesActivity.class);

  @Test
  public void test() {

    onView(withId(R.id.amountEditText))
            .perform(typeText("100"));

    onView(withId(R.id.progressBar))
            .check(matches(not(isDisplayed())));

    onView(withId(R.id.convertButton))
            .perform(click());
  }
}

在最后.perform(click())测试暂停一段时间后,我得到了这个:

android.support.test.espresso.PerformException: Error performing 'single click - At Coordinates: 719, 735 and precision: 16, 16' on view 'with id: com.sample.app:id/convertButton'.

更多事实:

  • 当我关闭这些选项时,进度条不会出现。
  • 点击按钮后,当我使用CPU安卓监视器检查应用程序时,应用程序会花时间绘制进度条,即使无法看到它。
  • 我在两部不同的手机上尝试过,所以它不依赖于硬件。

0 个答案:

没有答案