2016-05-31 18 views
1

嗨,我想運行一個單元測試,執行代碼塊,如果構建版本是23或更多,但當我打電話給Build.VERSION.SDK_INT它總是返回1?Robolectric單元測試build.os版本返回不正確?

這裏是單元測試代碼:

@Config(emulateSdk = 18) 
public class Test { 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     //test some block of code 

    } 

} 
+0

我不明白你想做什麼? –

+0

我試圖運行一個單元測試,該單元測試進入檢查Android構建版本的代碼塊中。它不工作。儘管我在配置註釋裏面的類的頂部指定了Android構建版本,但它仍返回int值 – jonney

+0

您使用的是什麼版本的Robolectric?因爲'emulateSdk'是爲2.x和3.x已經發布的。 –

回答

0

從這裏解釋(https://github.com/robolectric/robolectric/issues/277)你在JVM上運行,並且可能是爲什麼Robolectric這個常數根據模擬的SDK沒有改變。這實際上很奇怪。

但很顯然,在該線程也解決方法如何測試:

ReflectionHelpers.setStaticField(Build.VERSION.class, "SDK_INT", 18);