gpt4 book ai didi

android - 如何在 Robotium 测试中使用 SeekBar 模拟用户交互 ("fromUser=true")?

转载 作者:太空狗 更新时间:2023-10-29 16:17:08 24 4
gpt4 key购买 nike

我的代码使用传递给 onProgressChanged() 方法的 fromUser 参数区分用户和代码与 SeekBar 的交互:

@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean fromUser) {

if (fromUser) {
// execute only if it was user interaction with the SeekBar
...
}
}

当我尝试使用 robotium 测试我的 SeekBar 时,我无法“模拟用户与 SeekBar 的交互”:

solo.setProgressBar(mSeekBar, newValue);

onProgressChanged() 回调以 fromUser == false 执行。

是否可以编写设置 SeekBar 进度并同时模拟用户交互(fromUser == true)的 Robotium 测试?

谢谢!

最佳答案

解决方案(反射)

SeekBarProgressBar 的间接子类有公共(public) setProgress(int)只有一行调用包方法 setProgress(int, boolean)并将 fromUser == false 传递给它。可以使用 Reflections 并调用 setProgress(int, boolean)直接传递所需的 fromUser 参数:

private void setSeekBarProgress(int newProgress, boolean fromUser) {

Method privateSetProgressMethod = null;

try {
privateSetProgressMethod = ProgressBar.class.getDeclaredMethod("setProgress", Integer.TYPE, Boolean.TYPE);
privateSetProgressMethod.setAccessible(true);
privateSetProgressMethod.invoke(mSeekBar, newProgress, fromUser);
} catch (ReflectiveOperationException e) {
e.printStackTrace();
fail("Error while invoking private method.");
}
}

关于android - 如何在 Robotium 测试中使用 SeekBar 模拟用户交互 ("fromUser=true")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289735/

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