Abh*_*bhi 15 android robolectric
错误:
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) at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70) at 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(JUnitStart(JUnitStart) java:220) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53) 由:java.lang.IllegalArgumentException: Package 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 更多java:33) 在 com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220) 在 com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53) 引起:java.lang.IllegalArgumentException :在 org.robolectric.plugins.DefaultSdkPicker.configuredSdks(DefaultSdkPicker.java:118) 在 org.robolectric.plugins.DefaultSdkPicker.selectSdks(DefaultSdkPicker.java:69) 在 org.robolectric.plugins.selectSdks(DefaultSdkPicker.java:69) 在 org.robolectric. getChildren(RobolectricTestRunner.java:213) ... 13 更多java:33) 在 com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220) 在 com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53) 引起:java.lang.IllegalArgumentException :在 org.robolectric.plugins.DefaultSdkPicker.configuredSdks(DefaultSdkPicker.java:118) 在 org.robolectric.plugins.DefaultSdkPicker.selectSdks(DefaultSdkPicker.java:69) 在 org.robolectric.plugins.selectSdks(DefaultSdkPicker.java:69) 在 org.robolectric. getChildren(RobolectricTestRunner.java:213) ... 13 更多118) 在 org.robolectric.plugins.DefaultSdkPicker.selectSdks(DefaultSdkPicker.java:69) 在 org.robolectric.RobolectricTestRunner.getChildren(RobolectricTestRunner.java:213) ... 13 更多118) 在 org.robolectric.plugins.DefaultSdkPicker.selectSdks(DefaultSdkPicker.java:69) 在 org.robolectric.RobolectricTestRunner.getChildren(RobolectricTestRunner.java:213) ... 13 更多
如何解决这个问题?
Abh*_*bhi 22
发现这个帖子有同样的问题,有不同的错误信息。
这个答案帮助我解决了这个问题。
在这里发布相同的内容。
使用以下行在目录中创建一个robolectric.properties文件app/src/test/resources:
sdk=29
Run Code Online (Sandbox Code Playgroud)
这将强制 Robolectric 使用 API 29 而不是 30。
注意: Robolectric 现在最多支持 SDK 29(截至 2020 年 9 月 4 日)。
Mah*_*alv 10
您还可以使用Config注释来限制您的测试目标 SDK 。这使您可以为不同的测试考虑不同的配置或避免创建额外的配置文件。
@Config(sdk = [29])
class Test {
// ...
}
Run Code Online (Sandbox Code Playgroud)