在AsyncTask单元测试中捕获错误

时间:2014-03-11 01:52:43

标签: android junit android-asynctask

我正在尝试为异步任务编写一个测试,其中期望的结果是抛出错误(在这种情况下因为没有提供参数)。

通常我会尝试/捕获但是当在不同的线程上执行任务时,这似乎不起作用。

当前测试代码:

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以获取详细信息

并且永远不会到达捕获区。

目前还没有办法解决这个问题,还是有办法解决这个问题?

0 个答案:

没有答案