Есть ли возможность запустить тест между обработчиками событий нажатия клавиши и нажатия клавиши приложения? Я разрабатываю аркадную 2D-игру, gameThread внутри gameView обрабатывает нажатия клавиш. Я написал JUnit Android Testing Project. Я читал об this.sendKeys(), но кажется, что этот метод отправляет ключ вверх, а затем вниз сигналы.
ДЕТАЛИ: я буду использовать как сенсорное, так и не сенсорное взаимодействие. Но сейчас я тестирую
не сенсорный. Поэтому я написал:
`protected void setUp() выдает исключение {
super.setUp();
setActivityInitialTouchMode(false);
_activity = (GameTemplate) getActivity();
<...>
}`
как инициализация теста.
Я написал тест, чтобы убедиться, что событие keyUp обрабатывается хорошо:
`public void testReturnState() {
this.sendKeys(KeyEvent.KEYCODE_DPAD_LEFT);
_instrumentation.waitForIdleSync();
assertTrue(_logic.getSerp().state().equals(SerpentState.SERP_MOVES_FORWARD));
}`
Он работает нормально, но я написал еще один тест:
`public void testKeysSimple() {
this.sendKeys(KeyEvent.KEYCODE_DPAD_LEFT);
assertTrue(_logic.getSerp().state().equals(SerpentState.SERP_MOVES_LEFT));
}`
Это не удается, я думаю, это происходит по одной из двух причин:
1) программа еще не обработала событие keyDown;
2) программа обработала события keyDown и keyUp
Я новичок в тестировании, может все можно было бы сделать намного проще по другому. Пожалуйста помогите.
Я попытался добавить повторы в тесте:
public void testKeysUpDown() {
int t = TSet.skips;
this.sendRepeatedKeys(TSet.keyRepeats,KeyEvent.KEYCODE_DPAD_LEFT);
while(t>0 && !_logic.getSerp().state().equals(SerpentState.SERP_MOVES_LEFT)) t--;
assertTrue(t>0);
}
но тоже не получается.