Синхронизировать тестовый бегун с тестируемым приложением - PullRequest
0 голосов
/ 29 декабря 2011

Я исправляю пользовательский тестовый прогон, который использует java.awt.Robot для манипулирования тестируемым приложением.
После каждой простейшей операции (пометка мыши на каком-либо компоненте, щелчок мышью) мне нужен тестовый бегун, чтобы дождаться, пока приложение тестирует процесс. И ТОЛЬКО ПОСЛЕ этого продолжайте проверять значения, нажимая некоторые другие кнопки и т. Д.
Есть функция Robot.waitForIdle (), которая может ожидать, пока очередь событий станет пустой.
Но у меня все еще есть проблемы с синхронизацией из-за ранней проверки значений (предположим, значения, которые не рассчитываются в некоторых фоновых потоках, но являются очень EDT-потоком).
Полагаю, это связано с тем, что Robot не помещает событие в очередь событий напрямую, но это выгодно для базовой ОС, чтобы поместить новое событие, сгенерированное Robot, в очередь событий JVM. И эти собственные вызовы являются асинхронными, что означает, что помещение нового события в очередь событий не выполняется ни одним из потоков JVM, в отличие от SwingUtilities.invokeLater ().

Возможно ли реализовать какой-то хук, чтобы определить или подождать, пока базовая ОС поместит новое событие в очередь событий?
Я что-то упустил?

Спасибо.

1 Ответ

0 голосов
/ 29 декабря 2011

SunToolkit # realSync ()

...