由于Mockito.doThrow,测试永远不会被执行

时间:2018-01-17 14:15:46

标签: android testing android-asynctask mockito android-testing

我正在使用Mockito测试一个anroid应用。我想测试异常情况,但方法Mockito.doThrow挂起,测试永远不会执行(它既不会失败也不会成功)。

这是代码。 PackageDownloader代表AsyncTask。它的方法getdownloadPackage方法内部被调用。但执行永远不会到达那一点,因为它完全挂在doThrow行。

PackageDownloader packageDownloader = new PackageDownloader();
PackageDownloader mockPackageDownloader = Mockito.spy(packageDownloader);
HttpURLConnection connectionMock = Mockito.mock(HttpURLConnection.class);
Mockito.doReturn(connectionMock)
       .when(mockPackageDownloader)
       .createConnection(Mockito.any(URL.class));
Mockito.doThrow(new InterruptedException()).when(mockPackageDownloader).get();
downloadPackage();

1 个答案:

答案 0 :(得分:0)

所以事实证明我试图存根最终方法(如果你看一下定义,AsyncTask.get())。 有了Mockito,模拟最终方法是不可能的。 问题是我无法找到代码挂起的原因,这肯定是Mockito的错误。

我通过在doThrow方法调用之后放置downloadPackage来发现问题。