如何解决测试ListenableWorker时发生IllegalStateException
我正在跟踪this guide测试$this->request->getvar() <<< = null
,但得到$('.form-check-input').on('click',function() {
const menuId = $(this).data('menu');
const roleId = $(this).data('role');
$.ajax({
url: "/admin/changeaccess",type: 'post',data: {
menuId: menuId,roleId: roleId
},success: function() {
document.location.href = "/admin/roleaccess"; + menuId
}
});
});
代码段:
<input class="form-check-input" type="checkbox"
<?= check_access($role['id'],$m['id']); ?>
data-role="<?= $role['id']; ?>"
data-menu="<?= $m['id']; ?>">
例外:
ListenableWorker
IllegalStateException
失败的代码:
@Test
public void testStartWork() throws ExecutionException,InterruptedException {
when(Utils.initGeofenceApiIfRequired(application)).thenReturn(false);
ListenableWorker worker =
TestListenableWorkerBuilder.from(application,BackgroundLocationWork.class)
.build();
ListenableWorker.Result result = worker.startWork().get();
assertThat(result,is(ListenableWorker.Result.success()));
}
更新:我从班级中删除了java.lang.IllegalStateException: Unexpected worker type class com.demoapp.android.geofence.BackgroundLocationWork (expected class com.demoapp.android.geofence.BackgroundLocationWork)
at androidx.work.testing.TestListenableWorkerBuilder.build(TestListenableWorkerBuilder.java:370)
at com.demoapp.android.geofence.BackgroundLocationWorkTest.testStartWork(BackgroundLocationWorkTest.java:47)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.powermock.modules.junit4.rule.PowerMockStatement$1.run(PowerMockRule.java:83)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.powermock.reflect.internal.WhiteboxImpl.performMethodInvocation(WhiteboxImpl.java:1863)
at org.powermock.reflect.internal.WhiteboxImpl.doInvokeMethod(WhiteboxImpl.java:825)
at org.powermock.reflect.internal.WhiteboxImpl.invokeMethod(WhiteboxImpl.java:690)
at org.powermock.reflect.Whitebox.invokeMethod(Whitebox.java:401)
at org.powermock.classloading.AbstractClassloaderExecutor.getResult(AbstractClassloaderExecutor.java:69)
at org.powermock.classloading.AbstractClassloaderExecutor.executeWithClassLoader(AbstractClassloaderExecutor.java:59)
at org.powermock.classloading.SingleClassloaderExecutor.execute(SingleClassloaderExecutor.java:67)
at org.powermock.classloading.AbstractClassloaderExecutor.execute(AbstractClassloaderExecutor.java:43)
at org.powermock.modules.junit4.rule.PowerMockStatement.evaluate(PowerMockRule.java:75)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.robolectric.RobolectricTestRunner$HelperTestRunner$1.evaluate(RobolectricTestRunner.java:546)
at org.robolectric.internal.SandboxTestRunner$2.lambda$evaluate$0(SandboxTestRunner.java:252)
at org.robolectric.internal.bytecode.Sandbox.lambda$runOnMainThread$0(Sandbox.java:89)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
,只是使用了TestListenableWorkerBuilder.java
,它开始工作了。似乎由于Powermock的字节码操纵而无法正常工作。但是,如果有一种方法可以同时使用 if (!getWorkerClass().isAssignableFrom(worker.getClass())) {
throw new IllegalStateException(
String.format("Unexpected worker type %s (expected %s)",worker.getClass(),getWorkerClass()));
}
和PowerMockito
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。