Robolectric возвращает 0 высоту для представления с высотой содержимого переноса - PullRequest
9 голосов
/ 06 мая 2019

У меня есть AndroidView CustomView, который я хочу протестировать.

Немногие из тестов имитируют прокрутку N dps, когда N - высота subView.

Я запускаю тесты с помощью 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 голосов
/ 16 мая 2019

Используйте аннотацию @TextLayoutMode (REALISTIC) над вашим методом тестирования.

...