在将Android 11的targetSdkVersion升级为30之后,用Robolectric进行的测试不再起作用。
我在robolectric.properties
中添加了app/src/test/resources
文件
文字为sdk=28
的文本,强制其与SDK 28一起运行,但出现此错误
java.lang.VerifyError: Expecting a stackmap frame at branch target 123
Exception Details:
Location:
com/samsung/android/sdk/accessory/RegisterUponInstallReceiver.onReceive(Landroid/content/Context;Landroid/content/Intent;)V @1: ifnull
Reason:
Expected stackmap frame at this location.
Bytecode:
0x0000000: 2cc6 007a 2cb6 0016 c600 732c b600 1612
0x0000010: 05b6 0020 9900 67b2 0012 bb00 1159 1201
0x0000020: b700 212b b600 15b6 0023 b600 24b8 0017
0x0000030: 57bb 000f 2bb7 001f a700 1b4d b200 12bb
0x0000040: 0011 5912 03b7 0021 2cb6 0022 b600 24b8
0x0000050: 0018 572a b600 194d bb00 0e59 2bb6 0014
0x0000060: b700 1c59 4cb6 001d 4ebb 000c 5912 022d
0x0000070: 2cb7 001a b600 1b2b b600 1eb1
Exception Handler Table:
bci [49, 56] => handler: 59
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
at java.lang.Class.getConstructor0(Class.java:3075)
at java.lang.Class.getDeclaredConstructor(Class.java:2178)
at org.robolectric.util.ReflectionHelpers.callConstructor(ReflectionHelpers.java:377)
at org.robolectric.internal.bytecode.ShadowImpl.newInstanceOf(ShadowImpl.java:18)
at org.robolectric.shadow.api.Shadow.newInstanceOf(Shadow.java:35)
at org.robolectric.android.internal.AndroidEnvironment.registerBroadcastReceivers(AndroidEnvironment.java:491)
at org.robolectric.android.internal.AndroidEnvironment.installAndCreateApplication(AndroidEnvironment.java:242)
at org.robolectric.android.internal.AndroidEnvironment.setUpApplicationState(AndroidEnvironment.java:149)
at org.robolectric.RobolectricTestRunner.beforeTest(RobolectricTestRunner.java:298)
at org.robolectric.internal.SandboxTestRunner$2.lambda$evaluate$0(SandboxTestRunner.java:247)
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)
具有机器人版本4.2.1
和4.3