android测试中的模拟设备数据

android测试中的模拟设备数据,android,unit-testing,mocking,Android,Unit Testing,Mocking,运行我的android应用程序的设备现在可以将数据发送到服务器。但是我在测试时遇到了问题,因为设备的数据在不同的设备之间发生了变化 以下是我获取一些设备数据的方法: String simSerialNumber = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getSimSerialNumber(); String androidVersion = Build.VERSION.R

运行我的android应用程序的设备现在可以将数据发送到服务器。但是我在测试时遇到了问题,因为设备的数据在不同的设备之间发生了变化

以下是我获取一些设备数据的方法:

    String simSerialNumber = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getSimSerialNumber();
    String androidVersion = Build.VERSION.RELEASE;
    String deviceModel = Build.MODEL;
    String deviceSerial =  Build.SERIAL;

如何在测试中模拟这些信息?

找到了一种非常方便的方法来模拟此帖子中的设备信息:

如果使用Roboelectric,则可以使用ReflectionHelpers类

ReflectionHelpers.setStaticField(android.os.Build.class, "MANUFACTURER", "Manufacturer of your choice");

我会把它们放在一个可以嘲笑的单独的类中。即使您可以模拟Context\TelephonyManager(例如,使用Mockito),模拟Build.SERIAL等将更加困难。您可以尝试Robolectric(它已经伪造了一些系统属性),或者如果您在Android Studio中使用,您可以提供自己的Android.os.SystemProperties实现。@IuriiO我在助手类中创建了许多具有默认可见性的访问器函数,因此我可以模仿它们。不过,您的评论指导了我正确的方式。你能把它作为一个答案,列出本例中的模拟选项吗?谢谢