gpt4 book ai didi

java - 在 Android 上导致 NPE 的 runOnUiThread 和 sendKeys 调用序列

转载 作者:行者123 更新时间:2023-11-30 09:26:43 24 4
gpt4 key购买 nike

我是 Android 和 JUnit 测试的新手。我正在尝试为 MyFirstApp 示例提出一些测试用例,如下所述: http://developer.android.com/training/basics/firstapp/index.html

这是我的测试类的样子:

@Override
protected void setUp() throws Exception {
// TODO Auto-generated method stub
super.setUp();
setActivityInitialTouchMode(false);

mainActivity = (MainActivity)getActivity();

editText = (EditText) mainActivity.findViewById(
com.example.myfirstapp.R.id.edit_message);
button = (Button) mainActivity.findViewById(
com.example.myfirstapp.R.id.button1);

}

public void testPreconditions(){
assertTrue(editText.getHint().toString().equals(
mainActivity.getString(
com.example.myfirstapp.R.string.edit_message)));
}


public void testUI(){
mainActivity.runOnUiThread(new Runnable() {

@Override
public void run() {
editText.performClick();

}
});
getInstrumentation().waitForIdleSync();

this.sendKeys(KeyEvent.KEYCODE_A);
this.sendKeys(KeyEvent.KEYCODE_B);
this.sendKeys(KeyEvent.KEYCODE_C);
this.sendKeys(KeyEvent.KEYCODE_D);
this.sendKeys(KeyEvent.KEYCODE_E);



mainActivity.runOnUiThread(new Runnable() {

@Override
public void run() {
button.performClick();

}
});
}

testPrecontions 测试成功。然而,这为“button.performClick();”提供了 NPE

有人可以指出我可能做错了什么吗?

谢谢-昂舒

最佳答案

好的,我想我发现需要在第二次 runOnUiThread 调用之后添加对 getInstrumentation().waitForIdleSync() 的调用,如下所示

public void testUI(){

mainActivity.runOnUiThread(new Runnable() {

@Override
public void run() {
editText.performClick();

}
});

this.sendKeys(KeyEvent.KEYCODE_A);
this.sendKeys(KeyEvent.KEYCODE_B);
this.sendKeys(KeyEvent.KEYCODE_C);
this.sendKeys(KeyEvent.KEYCODE_D);
this.sendKeys(KeyEvent.KEYCODE_E);



mainActivity.runOnUiThread(new Runnable() {

@Override
public void run() {
button.performClick();

}
});
getInstrumentation().waitForIdleSync();
}

希望这对陷入类似情况的其他人有所帮助。

谢谢大家!-昂舒

关于java - 在 Android 上导致 NPE 的 runOnUiThread 和 sendKeys 调用序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14874962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com