Robolectric - Package targetSdkVersion = 30> maxSdkVersion = 29
ข้อผิดพลาด:
java.lang.IllegalArgumentException: ล้มเหลวในการกำหนดค่า: Package 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 .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.javaStreamStartell. java: 220) ที่ com.intellij.rt.junit.JUnitStarter.main (JUnitStarter.java:53) เกิดจาก: java.lang.IllegalArgumentException: Package targetSdkVersion = 30> maxSdkVersion = 29 ที่ org.robolectric.plugins.DefaultSdkPicker.conf (DefaultSdkPicker.java:118) ที่ org.robolectric.plugins.DefaultSdkPicker.selectSdks (DefaultSdkPicker.java:69) ที่ org.robolectric.RobolectricTestRunner.getChildren (RobolectricTestRunner.java:213) ... 13 เพิ่มเติม33) ที่ com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart (JUnitStarter.java:220) ที่ com.intellij.rt.junit.JUnitStarter.main (JUnitStarter.java:53) เกิดจาก: java.lang.IllegalArgumentException: Package targetSdkVersion = 30> maxSdkVersion = 29 ที่ org.robolectric.plugins.DefaultSdkPicker.configuredSdks (DefaultSdkPicker.java:118) ที่ org.robolectric.plugins.DefaultSdkPicker.selectSdks (DefaultSdkPicker.configuredSdks (DefaultSdkPicker.java:118) ที่ org.robolectric.plugins.DefaultSdkPicker.selectSdks (DefaultSdkPicker.configuredSdks (DefaultSdkPicker.java:118) ที่ RobolectricTestRunner.java:213) ... 13 เพิ่มเติม33) ที่ com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart (JUnitStarter.java:220) ที่ com.intellij.rt.junit.JUnitStarter.main (JUnitStarter.java:53) เกิดจาก: java.lang.IllegalArgumentException: Package targetSdkVersion = 30> maxSdkVersion = 29 ที่ org.robolectric.plugins.DefaultSdkPicker.configuredSdks (DefaultSdkPicker.java:118) ที่ org.robolectric.plugins.DefaultSdkPicker.selectSdks (DefaultSdkPicker.configuredSdks (DefaultSdkPicker.java:118) ที่ org.robolectric.plugins.DefaultSdkPicker.selectSdks (DefaultSdkPicker.configuredSdks (DefaultSdkPicker.java:118) ที่ RobolectricTestRunner.java:213) ... 13 เพิ่มเติมrobolectric.plugins.DefaultSdkPicker.selectSdks (DefaultSdkPicker.java:69) ที่ org.robolectric.RobolectricTestRunner.getChildren (RobolectricTestRunner.java:213) ... 13 เพิ่มเติมrobolectric.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 {
// ...
}