我一直在尝试让 Junit 测试等待异步任务完成但被卡住了。假设我们有这样的课程
class MyViewModel{
public void doSomething(){
new Task(){
void inBackground(){
model.getData(); //Executes for 4000 ms max
void onMainThread(){
displayData();
}
}
}
void displayData(){
}
}
这是我的测试方法
@UiThreadTest
@Test
public void someTest() throws Exception{
MyViewModel myViewModel = Mockito.spy(new MyViewModel());
myViewModel.doSomething();
Thread.sleep(5000);
verify(myViewModel).displayData();
}
我面临的问题是该verify
语句之前displayData
在内部类中被调用MyViewModel
并且测试用例失败。我该如何解决这个问题?也欢迎任何其他测试相同功能的方式。