模拟android.os.Build.MODEL

时间:2018-02-05 11:44:59

标签: android unit-testing mockito powermockito

我正在尝试使用Mockito / PowerMockito创建测试,我们使用android.os.Build.MODEL中的值。我尝试过使用:

@RunWith(PowerMockRunner.class)
@PrepareForTest({android.os.Build.class})
public class Test {
  @Before
  public void init() {
    PowerMockito.spy(android.os.Build.class);
    PowerMockito.doReturn("model").when(Build.class, "getString", "ro.product.model");
  }
}

因为我看到Device.MODEL正在调用private static String getString方法,但我得到以下异常:

org.powermock.reflect.exceptions.MethodNotFoundException: No method found with name 'getString' with parameter types: [ java.lang.String ] in class android.os.Build.

有没有办法模拟这个变量?

1 个答案:

答案 0 :(得分:1)

ReflectionHelpers.setStaticField(Build.class,"MODEL", "Value-You-Want-Model-To-Be");

我喜欢robolectric这样的东西,您可以使用上面的调用来模拟字段