Cha*_*ham 2 java android android-testing android-espresso
我正在测试一个不寻常的情况.我正在使用Espresso来编写我的测试.我知道Espresso和InstrumentationTestCase不是为了做到这一点.
我有一个我在其中一个课程中创建的监听器,它会通知我某个值的变化.我在我的测试套件中使用了监听器.
当我从侦听器获取值时,我需要声明值已更改为此类.
我的问题是测试将在我收到监听器的值之前结束.
private void sendSpeedChanges() {
setStaticSpeed(new Random().nextInt(10) + 2);
try {
runTestOnUiThread(new Runnable() {
@Override
public void run() {
consoleActivity.onSpeedChanged(getStaticSpeed(), false);
}
});
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
private void createSpeedDelegate() {
EspressoMachineValues.setOnSpeedChangeListener(new EspressoMachineValues.OnSpeedChangeListener() {
@Override
public void onSpeedChanged(double speed) {
//assert speed is correct.
assertTrue(getStaticSpeed() == speed);
}
});
}
Run Code Online (Sandbox Code Playgroud)
这些是我正在使用的两种方法.这createSpeedDelegate()是最开始的电话.然后我打电话sendSpeedChanges.我需要做X次.
sendSpeedChanges()在检查了价值之前我无法打电话onSpeedChange()Thread.sleep();因为监听器在主线程上.我试过添加一个getInstrumentation().wait(2000);也getInstrumentation().waitForIdleSync();很明显,没有工作.
在一个完美的世界里,我会这样做:
for (int i = 0; i < 42; i++) {
sendSpeedChanges();
i++;
}
Run Code Online (Sandbox Code Playgroud)
但是,这不会等待检查值.如果我等待值,测试运行器认为所有测试都已完成并终止.
我的问题是,有没有办法控制测试何时退出?即使我的测试似乎已经完成.
或者,您可以创建一个IdlingResource来监控您的速度.IdlingResource是Espresso用于验证主线程空闲或AsyncTask池中没有运行AsyncTasks的方式.
在库源代码中的coutingIdlingResource类中有一个loook.你可以实现类似的东西.在你的情况下,它可能是这样的:
[...]
private int mTargetSpeed;
private volatile ResourceCallback resourceCallback;
@Override
public boolean isIdleNow() {
boolean isIdle = false;
if (getStaticSpeed() == mTargetSpeed) {
isIdle = true;
resourceCallback.onTransitionToIdle();
} else {
isIdle = false;
}
return isIdle;
}
Run Code Online (Sandbox Code Playgroud)
在您的测试中,只要您想等待速度达到所需级别,您应该:
[...]
SpeedIdlingResource speedIdlingResource = new SpeedIdlingResource ("my_idling_resource");
Espresso.registerIdlingResources(speedIdlingResource);
Run Code Online (Sandbox Code Playgroud)
这样,Espresso将阻止,直到您的空闲资源告诉框架您的SpeedMonitor处于空闲状态.这是goode因为您利用所有Espresso同步框架来监控您何时达到目标速度,因此您的测试将比进行等待时更加可靠和快速.
| 归档时间: |
|
| 查看次数: |
2408 次 |
| 最近记录: |