Robolectric - Pakiet targetSdkVersion = 30> maxSdkVersion = 29

Sep 04 2020

Błąd:

java.lang.IllegalArgumentException: nie można skonfigurować: pakiet targetSdkVersion = 30> maxSdkVersion = 29

pod adresem org.robolectric.RobolectricTestRunner.getChildren (RobolectricTestRunner.java:247) pod adresem org.junit.runners.ParentRunner.getFilteredChildren (ParentRunner.java:534) pod adresem org.junit.runners.ParentRunner.getDescription:400 (ParentRunner.get) androidx.test.ext.junit.runners.AndroidJUnit4.getDescription (AndroidJUnit4.java:149) pod adresem org.junit.runners.model.RunnerBuilder.configureRunner (RunnerBuilder.java:81) pod adresem org.junit.runners.Model.Run. safeRunnerForClass (RunnerBuilder.java:72) pod adresem org.junit.internal.builders.AllDefaultPossiableBuilder.runnerForClass (AllDefaultPossabilitiesBuilder.java:37) w org.junit.runners.model.RunnerBuilder.safeRunnerva. .internal.requests.ClassRequest.createRunner (ClassRequest.java:28) w org.junit.internal.requests.MemoizingRequest.getRunner (MemoizingRequest.java:19) w com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs (JUnit4IdeaTestRunner.java:50) pod adresem com.intellij.rt.junit.IdeaTestRunner $ Repeater.startRunnerWithArgs (JUnit4IdeaTestRunner.java:50) w com.intellij.rt.junit.IdeaTestRunner $ Repeater.startRunnerWithArgner. java: 220) w com.intellij.rt.junit.JUnitStarter.main (JUnitStarter.java:53) Przyczyna: java.lang.IllegalArgumentException: Package targetSdkVersion = 30> maxSdkVersion = 29 w org.robolectric.plugins.DefaultSdkPconfigured (DefaultSdkPicker.java:118) w org.robolectric.plugins.DefaultSdkPicker.selectSdks (DefaultSdkPicker.java:69) w org.robolectric.RobolectricTestRunner.getChildren (RobolectricTestRunner.java:213) ... 13 więcej33) pod adresem com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart (JUnitStarter.java:220) pod adresem com.intellij.rt.junit.JUnitStarter.main (JUnitStarter.java:53) Przyczyna: java.lang.IllegalArgception: Package targetSdkVersion = 30> maxSdkVersion = 29 pod adresem org.robolectric.plugins.DefaultSdkPicker.configuredSdks (DefaultSdkPicker.java:118) pod adresem org.robolectric.plugins.DefaultSdkPicker.selectSdks (DefaultSdkPicker.javaner:69) pod adresem org.robolectric.plugins.DefaultSdkPicker.selectSdks (DefaultSdkPicker.javanergetric:69) RobolectricTestRunner.java:213) ... 13 więcej33) pod adresem com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart (JUnitStarter.java:220) pod adresem com.intellij.rt.junit.JUnitStarter.main (JUnitStarter.java:53) Przyczyna: java.lang.IllegalArgception: Package targetSdkVersion = 30> maxSdkVersion = 29 pod adresem org.robolectric.plugins.DefaultSdkPicker.configuredSdks (DefaultSdkPicker.java:118) pod adresem org.robolectric.plugins.DefaultSdkPicker.selectSdks (DefaultSdkPicker.javanergetric:69) pod adresem org.robolectric.plugins.DefaultSdkPicker.selectSdks (DefaultSdkPicker.javanergetric:69) RobolectricTestRunner.java:213) ... 13 więcejrobolectric.plugins.DefaultSdkPicker.selectSdks (DefaultSdkPicker.java:69) w org.robolectric.RobolectricTestRunner.getChildren (RobolectricTestRunner.java:213) ... 13 więcejrobolectric.plugins.DefaultSdkPicker.selectSdks (DefaultSdkPicker.java:69) w org.robolectric.RobolectricTestRunner.getChildren (RobolectricTestRunner.java:213) ... 13 więcej

Jak rozwiązać ten problem?

Odpowiedzi

13 Abhimanyu Sep 04 2020 at 14:58

Znaleziono ten post z tym samym problemem, z innym komunikatem o błędzie.
Ta odpowiedź pomogła mi rozwiązać problem.

Publikowanie tego samego tutaj.

Utwórz robolectric.propertiesplik w app/src/test/resourceskatalogu z następującym wierszem:

sdk=29  

Zmusi to Robolectric do korzystania z API 29 zamiast 30.

Uwaga: Robolectric obsługuje teraz do SDK 29 (stan na 4 września 2020 r.).

6 Mahdi-Malv Oct 29 2020 at 05:23

Możesz również ograniczyć docelowy test SDK za pomocą Configadnotacji. To sprawia, że ​​rozważasz różne konfiguracje dla różnych testów lub unikasz tworzenia dodatkowych plików konfiguracyjnych.

@Config(sdk = [29])
class Test {
 // ...
}