I'm trying to test a listener callback that is being triggered inside an AsyncTask
,
Listener class :
interface LoaderListener {
fun onByteSuccess(..., ..., ...)
fun onByteFailure(..., ...)
}
The class containing AsyncTask :
class Loader {
override fun handleStreamTask(){
InputStreamHandlingTask(..., ...).execute(byteArray)
}
private inner class InputStreamHandlingTask constructor(
internal var ...,
internal var ...
) : AsyncTask<ByteArray, Void, ByteArray>() {
override fun doInBackground(vararg params: ByteArray): ByteArray? {
val response = params[0]
.....
return response
}
override fun onPostExecute(byteArray: ByteArray?) {
if (byteArray != null) {
listener.onByteSuccess(..., ..., ...)
} else {
listener.onByteFailure(..., ...)
}
}
}
}
The test I'm trying to make :
@Test
fun testIfListenerCalled(){
val loader: Loader = mock()
val loaderListener: LoaderListener = mock()
loader.handleStreamTask()
verify(loaderListener).onByteSuccess(..., ..., ...)
}
The error I'm curently encountering:
Exception in thread ... java.lang.RuntimeException: Method execute in android.os.AsyncTask not mocked. See http://g.co/androidstudio/not-mocked for details. at android.os.AsyncTask.execute(AsyncTask.java)