Robolectric бросает FragmentManager уже выполняет транзакции - PullRequest
0 голосов
/ 14 апреля 2019

Я запускаю определенный юнит-тест:

      @Rule
      public ActivityScenarioRule<FragmentUtilActivity> activityScenarioRule2 =
          new ActivityScenarioRule<>(FragmentUtilActivity.class);

      @Before
      public void setUp() {
... //not related to activityScenarioRule2
      }

      @Test
      @Config(qualifiers = "sw600dp")
      public void myTest() {

        activityScenarioRule2
            .getScenario()
            .onActivity(
                activity ->
                    standaloneAccountMenuDialogFragment.showNow(
                        activity.getSupportFragmentManager(), "FragmentTag"));

        assertThat(...);
      }

Я вижу, что вызывается код @after (с одной точкой останова, которая превратилась в две точки останова)

image.png

и я получаю эту ошибку времени выполнения:

FragmentManager is already executing transactions
java.lang.IllegalStateException: 
    at android.support.v4.app.FragmentManagerImpl.ensureExecReady(FragmentManagerImpl.java:1551)
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1611)
    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManagerImpl.java:137)
    at android.os.Handler.handleCallback(Handler.java:790)

Как это может быть, если я использую ActivityScenario, который определен один раз и управляется аннотацией @Rule?Это не удалось только для этого конкретного теста

Есть идеи, что это может быть?

...