2013-12-12 75 views
65

我有一些測試,我想用Robolectric運行,我使用2.3-SNAPSHOT作爲我的APP使用ActionbarCompat,我需要使用2.3-SNAPSHOT版本,因爲Robolectric無法找到AppCompat主題。所以我建立在Eclipse類路徑和我結束了這一點:Robolectric是否支持API級別?

java.lang.UnsupportedOperationException: Robolectric does not support API level 9, sorry! 
at org.robolectric.SdkConfig.<init>(SdkConfig.java:24) 
at org.robolectric.RobolectricTestRunner.pickSdkVersion(RobolectricTestRunner.java:288) 
at org.robolectric.RobolectricTestRunner.getEnvironment(RobolectricTestRunner.java:264) 
at org.robolectric.RobolectricTestRunner.access$100(RobolectricTestRunner.java:57) 
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:186) 
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) 
at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:172) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:236) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 

我的測試項目的清單是這樣的:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.vendor.test" 
     android:versionCode="1" 
     android:versionName="1.0"> 
     <application> 
      <uses-library android:name="android.test.runner" /> 
     </application> 
     <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19" /> 
     <instrumentation android:name="android.test.InstrumentationTestRunner" 
     android:targetPackage="com.vendor" /> 
</manifest> 

我總是抱怨的API級別,不管我使用。

有沒有工作?

+0

你嘗試改變miniumum sdk到8看看? – user2511882

回答

80

更新:註釋現在@Config(sdk = 18)(或@Config(sdk = Build.VERSION_CODES.JELLY_BEAN_MR2))和鏈接文件中提到的屬性現在是robolectric.properties

原始答案: 您可以使用@Config註釋讓Robolectric模擬SDK版本。如前所述here

不知道這意味着什麼你奇巧具體的測試,但至少應該等工作

import org.robolectric.annotation.Config; 

@Config(emulateSdk = 18) // now @Config(sdk = 18) as of Robolectric 3.0 
@RunWith(RobolectricTestRunner.class) 
public class SomeTest ... 

這也可以使用一個文件:你可以把這個。

+1

它適用於我,現在對API 18不是至關重要的。謝謝! – Kitesurfer

+0

謝謝!有沒有一種方法來設置全球?我不想在每個測試 – ligi

+0

中設置(並且稍後希望未設置)。根據我放在那裏的鏈接,一個'org.robolectric.Config.properties'文件應該爲你的整個項目做。 –

9

SdkConfig.java,Roboelectric僅支持以下版本/ API級別:

SUPPORTED_APIS.put(Build.VERSION_CODES.JELLY_BEAN, new SdkVersion("4.1.2_r1", "0")); 
SUPPORTED_APIS.put(Build.VERSION_CODES.JELLY_BEAN_MR1, new SdkVersion("4.2.2_r1.2", "0")); 
SUPPORTED_APIS.put(Build.VERSION_CODES.JELLY_BEAN_MR2, new SdkVersion("4.3_r2", "0")); 
SUPPORTED_APIS.put(Build.VERSION_CODES.KITKAT, new SdkVersion("4.4_r1", "0")); 
SUPPORTED_APIS.put(Build.VERSION_CODES.LOLLIPOP, new SdkVersion("5.0.0_r2", "0")); 

你確定你已經嘗試過這些?

+3

我也累了18.因爲我工作在一些KitKat相關的東西,我需要使用API​​級別19. – Kitesurfer

+2

任何人都知道爲什麼它不支持API級別19? – sirFunkenstine

+0

他們已將文件移至此處https://github.com/robolectric/robolectric/blob/master/robolectric/src/main/java/org/robolectric/internal/SdkConfig.java並添加了對版本4.4_r1和5.0.0_r2的支持 –

27

如果喜歡我的人,還是來訪的鏈接類似的錯誤,

@Config(emulateSdk =)現在沒有工作。 其改爲sdk--
@Config(constants = BuildConfig.class, sdk=21)

對於我來說,我正在用錯誤的目標版本22,

java.lang.UnsupportedOperationException: Robolectric does not support API level 22 

,所以我就模仿到21

+1

謝謝!你是怎麼發現這個的?我無法在任何地方找到它。我還有其他類似的問題,從3.0-rc2升級到3.0,我覺得他們必須記錄在某處......! –

+0

即使我正在敲我的頭。這裏有一個快速維基引用,可能對你有用:-) https://github.com/robolectric/robolectric/wiki/2.4-to-3.0-Upgrade-Guide – Nicks