Robolectric-封装目标SdkVersion = 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.ParentRunner.getDescription(ParentRunner.java:400) 在 androidx.test.ext.junit.runners.AndroidJUnit4.getDescription(AndroidJUnit4.java:149) 在 org.junit.runners.model.RunnerBuilder.configureRunner(RunnerBuilder.java:81) 在 org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:72) 在 org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37) 在 org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70) 在 org.junit.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(IdeaTestRunner.java:33) 在 com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220) 在com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53) 引起原因:java.lang.IllegalArgumentException:包 targetSdkVersion = 30> maxsdkVersion = 29 at org.robolectric.plugins.DefaultSdkPicker.configuredSdks(DefaultSdkPicker.java:118) 在 org.robolectric.plugins.DefaultSdkPicker.selectSdks(DefaultSdkPicker.java:69) 在 org.robolectric.RobolectricTestRunner.getChildren(RobolectricTestRunner.java:213) ...还有13个

如何解决此问题?

解决方法

发现此post时存在相同的问题,但错误消息有所不同。
This answer帮助我解决了这个问题。

在此处发布相同内容。

robolectric.properties目录中使用以下行创建一个app/src/test/resources文件:

sdk=29  

这将强制Robolectric使用API​​ 29而不是30。

注意::Robolectric现在最多支持SDK 29。

,

您还可以使用Config注释限制测试目标SDK。这使您可以为不同的测试考虑不同的配置,或者避免创建额外的配置文件。

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

以上两个答案都很好,但最新版本的 robolectric 支持 android sdk 30。

因此只需升级 robolectric 依赖项即可解决问题。

在撰写本文时,最新版本为 4.5.1。

有关最新版本的更多信息,请参阅官方 github 网站。