Fix crash of test after finishing RecentsAnimationTest

The scheduleIdleLocked may be called when updating visibility
of activity. That will cause a mocked record to be used in
unexpected invocations.

Also block until the test thread has completed the pending
messages to prevent the execution from overlapping with the
next test.

Fix: 134891465
Test: atest RecentsAnimationTest
Change-Id: I339505ee75ba6e67aa8668dd4e40aef0f74df2aa
This commit is contained in:
Riddle Hsu
2019-06-11 23:44:39 +08:00
parent e33ff60894
commit e2e5ee1c39

View File

@@ -585,7 +585,10 @@ class ActivityTestsBase {
}
void tearDown() {
mHandlerThread.quitSafely();
// Make sure there are no running messages and then quit the thread so the next test
// won't be affected.
mHandlerThread.getThreadHandler().runWithScissors(mHandlerThread::quit,
0 /* timeout */);
}
}
@@ -630,7 +633,8 @@ class ActivityTestsBase {
mWindowManager = prepareMockWindowManager();
mKeyguardController = mock(KeyguardController.class);
// Do not schedule idle timeouts
// Do not schedule idle that may touch methods outside the scope of the test.
doNothing().when(this).scheduleIdleLocked();
doNothing().when(this).scheduleIdleTimeoutLocked(any());
// unit test version does not handle launch wake lock
doNothing().when(this).acquireLaunchWakelock();