以下内容一直在为Robolectro4.2工作
@Implements(AsyncTask.class)
public class MyShadowAsyncTask<Params, Progress, Result>
extends ShadowAsyncTask<Params, Progress, Result> {
@Implementation
@SuppressWarnings("unchecked")
public AsyncTask<Params, Progress, Result> executeOnExecutor(
Executor executor, Params... params) {
return super.execute(params);
}
}方法.execute似乎不再存在于4.4中
所以我试着
@Implements(AsyncTask.class)
public class CmbShadowAsyncTask<Params, Progress, Result>
extends ShadowLegacyAsyncTask<Params, Progress, Result> {
@Implementation
@SuppressWarnings("unchecked")
public AsyncTask<Params, Progress, Result> executeOnExecutor(
Executor executor, Params... params) {
return super.executeOnExecutor(executor, params);
}
}抓到我
Exception in thread "AsyncTask #1" java.lang.RuntimeException: java.lang.UnsupportedOperationException: post is not supported in PAUSED LooperMode
at org.robolectric.shadows.ShadowLegacyAsyncTask$1.done(ShadowLegacyAsyncTask.java:66)
at java.base/java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:381)
at java.base/java.util.concurrent.FutureTask.set(FutureTask.java:232)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:272)
at org.robolectric.shadows.ShadowLegacyAsyncTask$3.run(ShadowLegacyAsyncTask.java:127)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.UnsupportedOperationException: post is not supported in PAUSED LooperMode
at org.robolectric.android.internal.LooperDelegatingScheduler.post(LooperDelegatingScheduler.java:62)
at org.robolectric.shadows.ShadowLegacyAsyncTask$1.done(ShadowLegacyAsyncTask.java:43)
... 7 more
this action is not supported in PAUSED mode.
java.lang.IllegalStateException: this action is not supported in PAUSED mode.
at org.robolectric.shadows.ShadowLooper.assertLooperMode(ShadowLooper.java:27)
at org.robolectric.shadows.ShadowApplication.getBackgroundThreadScheduler(ShadowApplication.java:113)
at org.robolectric.shadows.ShadowLegacyAsyncTask.execute(ShadowLegacyAsyncTask.java:104)
at android.os.AsyncTask.execute(AsyncTask.java)@Implements(AsyncTask.class)
public class CmbShadowAsyncTask<Params, Progress, Result>
extends ShadowPausedAsyncTask<Params, Progress, Result> {
@Implementation
@SuppressWarnings("unchecked")
public AsyncTask<Params, Progress, Result> executeOnExecutor(
Executor executor, Params... params) {
return super.executeOnExecutor(executor, params);
}
}抓到我
this action is not supported in PAUSED mode.
java.lang.IllegalStateException: this action is not supported in PAUSED mode.
at org.robolectric.shadows.ShadowLooper.assertLooperMode(ShadowLooper.java:27)
at org.robolectric.shadows.ShadowApplication.getBackgroundThreadScheduler(ShadowApplication.java:113)
at org.robolectric.Robolectric.getBackgroundThreadScheduler(Robolectric.java:346)
at org.robolectric.Robolectric.flushBackgroundThreadScheduler(Robolectric.java:353)Java版本11级版本6.7.1 AGP版本4.3.1
发布于 2021-12-14 19:17:30
根据Robolectric的维护者,迁移步骤如下
@LooperMode(LEGACY)shadowOf(Looper.getMainLooper()).idle()添加到每个触发器中https://stackoverflow.com/questions/70311538
复制相似问题