gpt4 book ai didi

Android 测试框架 performClick() 未启动 Activity

转载 作者:太空狗 更新时间:2023-10-29 15:14:28 25 4
gpt4 key购买 nike

我有一个 ActivityInstrumentationTestCase2,其中包含执行 Button.click() 的测试。 Button 应该启动另一个 Activity 来做一些工作。我认为 Button.performClick() 执行正确,但测试在执行其他 Activity 之前完成。

@UiThreadTest
public void test() {

Intent i = new Intent(this.myActivity, MyActivity.class);
myActivity.startActivity(i);


Button button = (Button) myActivity.findViewById(R.id.button);
button.performClick();


}

我尝试了以下有效的方法,但我认为这与其说是一个好的解决方案,不如说是一种变通方法。

public void test() {

Intent i = new Intent(this.myActivity, MyActivity.class);
myActivity.startActivity(i);


Button button = (Button) myActivity.findViewById(R.id.button);
button.performClick();

try {
Thread.sleep(50000);
} catch (InterruptedException e) {
Log.e("MyTest", e.getMessage());
}


}

有没有更好的办法?

最佳答案

这是我的最终解决方案:

public void test() {

Instrumentation instrumentation = getInstrumentation();

// Prepare a monitor for your activity
Instrumentation.ActivityMonitor monitor = instrumentation.addMonitor(MyActivity.class.getName(), null, false);

// Start your activity manually
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClassName(instrumentation.getTargetContext(), MyActivity.class.getName());
instrumentation.startActivitySync(intent);

Activity myActivity = getInstrumentation().waitForMonitor(monitor);

Button upSend = (Button) myActivity.findViewById(R.id.button);
upSend.performClick();

Log.d("MyTest", "button clicked");

//wait for SecondActivity to start (called by MyActivity)
monitor = instrumentation.addMonitor(SecondActivity.class.getName(), null, false);
Activity secondActivity = getInstrumentation().waitForMonitor(monitor);

int count = 0;

//wait until SecondActivity is finishing
while(!secondActivity.isFinishing()) {

Log.d("MyTest", "waiting - " + ++count);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {

Log.e("MyTest",e.getMessage());
}
}

}

再次感谢 Erik;现在第二个 Activity 通过按钮开始,测试正在等待它完成。

关于Android 测试框架 performClick() 未启动 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13855559/

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