我正在尝试为异步任务编写一个测试,其中期望的结果是抛出错误(在这种情况下因为没有提供参数)。
通常我会尝试/捕获但是当在不同的线程上执行任务时,这似乎不起作用。
当前测试代码:
public class TokensAsyncTaskTest extends TestCase {
Context mockContext = new MockContext();
@Mock
TokensAsyncTask.OnResultListener mockListener;
@Mock
private APIManager apiManager;
@Override
protected void setUp() throws Exception {
super.setUp();
MockitoAnnotations.initMocks(this);
}
public void testNoToken() throws Exception {
TokensAsyncTask task = getTask();
try {
task.execute();
task.get();
} catch (IllegalArgumentException e) {
assertTrue(true);
}
verify(mockListener).onTokensReturned(null);
verify(apiManager, never()).getObjectFromAPI(isA(String.class), isA(String.class), isA(String.class));
}
protected TokensAsyncTask getTask() {
TokensAsyncTask task = new TokensAsyncTask(mockContext, mockListener, apiManager);
return task;
}
这会导致错误
测试未能完成。原因:'由于'java.lang.IllegalArgumentException''导致仪表运行失败。检查设备logcat以获取详细信息
并且永远不会到达捕获区。
目前还没有办法解决这个问题,还是有办法解决这个问题?