如何识别当前正在运行android测试的设备?

时间:2015-05-06 05:52:11

标签: android gradle

我连接了多个设备,并运行了gradle命令'connectedCheck',它在多个设备上运行测试。

ConnectedCheck在订单中的所有设备上执行测试。我想获取当前正在运行测试的设备的序列号。

android是否提供了这样做的方法?

2 个答案:

答案 0 :(得分:2)

您可以获得有关Android设备的大量详细信息:

//Get the instance of TelephonyManager  
    TelephonyManager  tm=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);  

    //Calling the methods of TelephonyManager the returns the information  
    String IMEINumber=tm.getDeviceId();  
    String subscriberID=tm.getDeviceId();  
    String SIMSerialNumber=tm.getSimSerialNumber();  
    String networkCountryISO=tm.getNetworkCountryIso();  
    String SIMCountryISO=tm.getSimCountryIso();  
    String softwareVersion=tm.getDeviceSoftwareVersion();  
    String voiceMailNumber=tm.getVoiceMailNumber();  

    //Get the phone type  
    String strphoneType="";  

    int phoneType=tm.getPhoneType();  

    switch (phoneType)   
    {  
            case (TelephonyManager.PHONE_TYPE_CDMA):  
                       strphoneType="CDMA";  
                           break;  
            case (TelephonyManager.PHONE_TYPE_GSM):   
                       strphoneType="GSM";                
                           break;  
            case (TelephonyManager.PHONE_TYPE_NONE):  
                        strphoneType="NONE";                
                            break;  
     }  

要获取设备型号名称,我们使用:

public String getDeviceName() {
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
if (model.startsWith(manufacturer)) {
    return capitalize(model);
} else {
    return capitalize(manufacturer) + " " + model;
}
}


private String capitalize(String s) {
if (s == null || s.length() == 0) {
    return "";
}
char first = s.charAt(0);
if (Character.isUpperCase(first)) {
    return s;
} else {
    return Character.toUpperCase(first) + s.substring(1);
}
} 

答案 1 :(得分:0)

我找到了解决方案!事实上,首先没有问题。

问题: Gradle android插件运行测试的任务是'connectedCheck'。它执行测试连接到主机的Android设备的数量。现在当我在@Ignore测试时,它将在所有那些设备上被忽略,因为我只想为失败的设备/设备做那些

解决方案:添加自定义jUnit批注,该批注为设备序列ID获取一组String值。通过扩展BlockJUnit4ClassRunner覆盖runChild来编写自定义测试运行器,以检查如果注释方法,Build.Device是否与注释中提供的相同。

如果忽略fireTestIgnored,则仅针对您在注释中指定的设备跳过它。