是否有可能在应用程序的按键事件处理程序和按键事件处理程序之间运行测试?我开发了 2D 街机游戏,gameView 中的 gameThread 处理按键。我编写了 JUnit Android 测试项目。 我已经阅读了有关 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);
}
但它也失败了。
最佳答案
你需要Instrumentation#sendKeySync可以完全控制发送的事件。
关于android - 在按下和按下事件之间进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6983314/