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



我正在使用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();

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

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

最新更新