Robolectric对于包含包装内容高度的视图返回0高度

时间:2019-05-06 17:54:42

标签: android layout view robolectric layout-inflater

我有一个要测试的android customView。

当N是subView高度时,很少有测试会模拟N dps的滚动。

我使用robolectric运行测试,但是我总是在运行时获得subView.getHeight() == 0

那是因为subView的高度被定义为wrap_content,我想robolectric不会对所有视图进行充气以获取准确的信息。

例如,subView.getWidth > 0定义为match parent

这是我的测试@before方法:

@Before
  public void setUp() {

    myView.getHeaderView().getViewTreeObserver().addOnGlobalLayoutListener(
        new OnGlobalLayoutListener() {
          @Override
          public void onGlobalLayout() {
            myHeight =
                myView.getHeaderView().getHeight();
          }
        });

    activityScenarioRule
        .getScenario()
        .onActivity(activity -> activity.setContentView(myView));
    activityScenarioRule.getScenario().moveToState(State.RESUMED);
  }

在测试运行时如何仍然获得自动换行内容的高度?

该代码确实调用onGlobalLayout,但返回height==0

1 个答案:

答案 0 :(得分:0)

使用 测试方法上方的@TextLayoutMode(REALISTIC)注释。