Есть ли возможность запустить тест между обработчиками события нажатия клавиши key и key up? Я разрабатываю 2D аркадную игру, gameThread внутри gameView обрабатывает нажатие клавиш. Я написал проект тестирования Android JUnit.
Я читал об этом .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);
}
но тоже не получается.