Robolectric - Пакет targetSdkVersion = 30> maxSdkVersion = 29
Ошибка:
java.lang.IllegalArgumentException: не удалось настроить: пакет targetSdkVersion = 30> maxSdkVersion = 29
на org.robolectric.RobolectricTestRunner.getChildren (RobolectricTestRunner.java:247) на org.junit.runners.ParentRunner.getFilteredChildren (ParentRunner.java:534) в org.junit.runners.RunnerRunner.get androidx.test.ext.junit.runners.AndroidJUnit4.getDescription (AndroidJUnit4.java:149) в org.junit.runners.model.RunnerBuilder.configureRunner (RunnerBuilder.java:81) в org.junit.runner.runners. safeRunnerForClass (RunnerBuilder.java:72) по адресу org.junit.internal.builders.AllDefaultPossabilitiesBuilder.runnerForClass (AllDefaultPossabilitiesBuilder.java:37) по адресу org.junit.runners.model.Runner.ClassBuilder (org. .internal.requests.ClassRequest.createRunner (ClassRequest.java:28) в org.junit.internal.requests.MemoizingRequest.getRunner (MemoizingRequest.java:19) в com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs (JUnit4IdeaTestRunner.java:50) в com.intellij.rt.junit.IdeaTestRunner $ Repeater.startRunnerWithArgs (Ideartj.jnit.StartRunnerWithArgs (Ideartj.jnit.StartRunnerWithArgs (Ideart.jnit.Starter.Start.jpg). java: 220) в com.intellij.rt.junit.JUnitStarter.main (JUnitStarter.java:53) Вызвано: java.lang.IllegalArgumentException: Package targetSdkVersion = 30> maxSdkVersion = 29 at org.robolectric.plugins.DefaultS (DefaultSdkPicker.java:118) на org.robolectric.plugins.DefaultSdkPicker.selectSdks (DefaultSdkPicker.java:69) на org.robolectric.RobolectricTestRunner.getChildren (RobolectricTestRunner.java:213) ...33) в com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart (JUnitStarter.java:220) в com.intellij.rt.junit.JUnitStarter.main (JUnitStarter.java:53) Вызвано: java.lang.IllegalAllception targetSdkVersion = 30> maxSdkVersion = 29 в org.robolectric.plugins.DefaultSdkPicker.configuredSdks (DefaultSdkPicker.java:118) в org.robolectric.plugins.DefaultSdkPicker.selectSdks (по умолчанию). RobolectricTestRunner.java:213) ... еще 1333) в com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart (JUnitStarter.java:220) в com.intellij.rt.junit.JUnitStarter.main (JUnitStarter.java:53) Вызвано: java.lang.IllegalAllception targetSdkVersion = 30> maxSdkVersion = 29 в org.robolectric.plugins.DefaultSdkPicker.configuredSdks (DefaultSdkPicker.java:118) в org.robolectric.plugins.DefaultSdkPicker.selectSdks (по умолчанию). RobolectricTestRunner.java:213) ... еще 13robolectric.plugins.DefaultSdkPicker.selectSdks (DefaultSdkPicker.java:69) на org.robolectric.RobolectricTestRunner.getChildren (RobolectricTestRunner.java:213) ... еще 13robolectric.plugins.DefaultSdkPicker.selectSdks (DefaultSdkPicker.java:69) на org.robolectric.RobolectricTestRunner.getChildren (RobolectricTestRunner.java:213) ... еще 13
Как исправить эту проблему?
Ответы
Нашел этот пост с той же проблемой, но с другим сообщением об ошибке.
Этот ответ помог мне решить проблему.
Публикуем то же самое здесь.
Создайте robolectric.propertiesфайл внутри app/src/test/resourcesкаталога со следующей строкой:
sdk=29
Это заставит Robolectric использовать API 29 вместо 30.
Примечание. Сейчас Robolectric поддерживает до SDK 29 (по состоянию на 4 сентября 2020 г.).
Вы также можете ограничить свой тестовый целевой SDK с помощью Configаннотации. Это заставляет вас рассматривать разные конфигурации для разных тестов или избегать создания дополнительных файлов конфигурации.
@Config(sdk = [29])
class Test {
// ...
}