2016-05-31 46 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); 
相关问题