2016-05-31 3 views
1

Привет, я пытаюсь запустить единичный тест, который выполняет блок кода, если версия сборки составляет 23 или более, но когда я вызываю Build.VERSION.SDK_INT, он всегда возвращает 1?Тесты Robolectric unit версии 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. Это не работает. Он возвращает значение int, несмотря на то, что я указываю версию сборки Android в верхней части класса внутри аннотации конфигурации. – 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); 
Смежные вопросы