Skip to content

Robolectric tests fail to run after declaring purchases-kmp dependency #271

@jadlr

Description

@jadlr

Describe the bug
After adding the purchases-kmp library to an android kmp project the androidUnitTest using robolectric stop working. It seems to have something to with the an amazon dependency.

  1. Environment
    1. Platform: Android
    2. SDK version: "1.3.2+13.9.0"
    3. OS version:
    4. IDE (e.g. Android Studio, Xcode, Fleet): Android Studio
    5. IDE version: Android Studio Koala | 2024.1.1 Patch 2 / Build #AI-241.18034.62.2411.12169540
    6. Device and/or emulator/simulator:
      • Device
      • Emulator/simulator
    7. Environment:
      • Closed testing / Sandbox
      • TestFlight
      • Production
    8. How widespread is the issue. Percentage of devices affected.
  2. Debug logs that reproduce the issue
  3. Steps to reproduce, with a description of expected vs. actual behavior

Expected bahavior would be that the tests run

Steps to reproduce:

  • Write a simple robolectric test in androidUnitTest in shared
  • Add purchases-kmp depencendy
  • Run test
  1. Other information (e.g. stacktraces, related issues, suggestions how to fix, links for us to
    have context, eg. stackoverflow, etc.)
Expecting a stackmap frame at branch target 11
Exception Details:
  Location:
    com/amazon/device/iap/ResponseReceiver.onReceive(Landroid/content/Context;Landroid/content/Intent;)V @0: invokestatic
  Reason:
    Expected stackmap frame at this location.
  Bytecode:
    0000000: b800 0c2b 2cb6 000b a700 1d4e b200 09bb
    0000010: 0008 59b7 000f 1201 b600 112d b600 10b6
    0000020: 0012 b800 0db1                         
  Exception Handler Table:
    bci [0, 8] => handler: 11

java.lang.VerifyError: Expecting a stackmap frame at branch target 11
Exception Details:
  Location:
    com/amazon/device/iap/ResponseReceiver.onReceive(Landroid/content/Context;Landroid/content/Intent;)V @0: invokestatic
  Reason:
    Expected stackmap frame at this location.
  Bytecode:
    0000000: b800 0c2b 2cb6 000b a700 1d4e b200 09bb
    0000010: 0008 59b7 000f 1201 b600 112d b600 10b6
    0000020: 0012 b800 0db1                         
  Exception Handler Table:
    bci [0, 8] => handler: 11

	at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.base/java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	at java.base/java.lang.Class.getConstructor0(Unknown Source)
	at java.base/java.lang.Class.getDeclaredConstructor(Unknown Source)
	at org.robolectric.util.ReflectionHelpers.callConstructor(ReflectionHelpers.java:519)
	at org.robolectric.internal.bytecode.ShadowImpl.newInstanceOf(ShadowImpl.java:19)
	at org.robolectric.shadow.api.Shadow.newInstanceOf(Shadow.java:39)
	at org.robolectric.android.internal.AndroidTestEnvironment.registerBroadcastReceivers(AndroidTestEnvironment.java:656)
	at org.robolectric.android.internal.AndroidTestEnvironment.installAndCreateApplication(AndroidTestEnvironment.java:364)
	at org.robolectric.android.internal.AndroidTestEnvironment.lambda$createApplicationSupplier$0(AndroidTestEnvironment.java:262)
	at org.robolectric.util.PerfStatsCollector.measure(PerfStatsCollector.java:51)
	at org.robolectric.android.internal.AndroidTestEnvironment.lambda$createApplicationSupplier$1(AndroidTestEnvironment.java:259)
	at com.google.common.base.Suppliers$NonSerializableMemoizingSupplier.get(Suppliers.java:200)
	at org.robolectric.RuntimeEnvironment.lambda$getApplication$0(RuntimeEnvironment.java:71)
	at org.robolectric.shadows.ShadowInstrumentation.runOnMainSyncNoIdle(ShadowInstrumentation.java:1190)
	at org.robolectric.RuntimeEnvironment.getApplication(RuntimeEnvironment.java:71)
	at org.robolectric.android.internal.AndroidTestEnvironment.setUpApplicationState(AndroidTestEnvironment.java:230)
	at org.robolectric.RobolectricTestRunner.beforeTest(RobolectricTestRunner.java:284)
	at org.robolectric.internal.SandboxTestRunner$2.lambda$evaluate$2(SandboxTestRunner.java:279)
	at org.robolectric.internal.bytecode.Sandbox.lambda$runOnMainThread$0(Sandbox.java:104)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

Additional context

Robolectric version 4.14.1
Junit 4.13.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions