【发布时间】:2016-09-09 09:58:24
【问题描述】:
我正在为 Android 应用编写单元测试,我不应该更改哪些代码。我在使用java.util.Timer 测试一段代码时遇到了问题。我正在寻找一种方法来使任务立即执行,而无需等到预定时间。因为它是作为本地对象创建的,所以我不能用 Mockito 模拟它。
public void testedMethod() {
long time = 9999;
final Timer timer = new Timer()
timer.schedule(new TimerTask() {
@Override
public void run() {
//do stuff
}
}, time);
}
@Test
public void test() throws Exception {
testedObject.testedMethod();
Thread.sleep(10000);
//verify that stuff was done
}
我正在使用 Robolectric (3.1),所以我尝试使用 ShadowLooper 和 Robolectric 类的方法,但无济于事。目前我必须使用Thread.sleep(),但这很不方便。
有没有办法强制Timer 执行预定的TimerTasks,比如使用ShadowLooper.runToEndOfTasks() 执行由Handler 预定的Runnables?
【问题讨论】:
标签: java android unit-testing robolectric timertask