测试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 (将#修改为@)