2012-01-02 1 views
0

В настоящее время у меня есть ряд функциональных тестов, написанных на javascript с использованием API UIAutomation от Apple. Тесты написаны для iPhone, но приложение также поддерживает iPad.Как определить, на каком устройстве iOS работают мои функциональные тесты?

Чтобы расширить свои тесты для работы на iPad, мне нужно внести некоторые изменения в код, но сначала мне нужно выяснить, какое устройство выполняет тесты.

Как определить, какое устройство/симулятор запускает тесты?, когда я запускаю тесты javascript из инструмента автоматизации.

+0

, если вы делаете это в качестве тестов Javascript, есть ли Objective интерфейс C к вашему код вообще, и если да, то как вы его вызываете? –

+0

Интерфейс, вероятно, то, что я ищу. Я использую инструмент автоматизации в Xcode для загрузки файла сценария в соответствии с инструкциями Apple. Насколько я знаю, это официально поддерживаемый метод тестирования вашего приложения. http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Reference/UIAElementClassReference/UIAElement/UIAElement.html#//apple_ref/doc/uid/TP40009903 – MdaG

ответ

1

UIATarget.localTarget(). Model() содержит информацию о том, какое устройство проводит тесты.

Я обнаружил Alex Vollmer's tuneup_js library. Это позволяет в некотором роде использовать независимый от устройства код.

например)

test("my test", function(target, app) { 
    assertWindow({ 
    "navigationBar~iphone": { 
     leftButton: { name: "Back" }, 
     rightButton: { name: "Done" } 
    }, 
    "navigationBar~ipad": { 
     leftButton: null, 
     rightButton: { name: "Cancel" } 
    }, 
    }); 
}); 

редактировать

Найдено следующее tuneup_js:

/** 
    * A convenience method for detecting that you're running on an iPad 
    */ 
    isDeviceiPad: function() { 
     return this.model().match(/^iPad/) !== null; 
    }, 

    /** 
    * A convenience method for detecting that you're running on an 
    * iPhone or iPod touch 
    */ 
    isDeviceiPhone: function() { 
     return this.model().match(/^iPhone/) !== null; 
    } 

С этим я буду в состоянии писать устройства специальный код.

1

Следуйте документации, предоставленные здесь, вы получите всю необходимую информацию: https://developer.apple.com/library/ios/#documentation/ToolsLanguages/Reference/UIATargetClassReference/UIATargetClass/UIATargetClass.html

// Вот скрипт я использую, чтобы получить имя устройства, версия ОС, расслоении идентификатор, цель и т.д ..

#import "tuneupjs/Utilities.js" 
var target = UIATarget.localTarget(); 

var app_bundle_id = target.frontMostApp().bundleID(); 
UIALogger.logDebug("App Bundle Id : " + app_bundle_id); 

if(app_bundle_id.strContains("ShazamDev")) 
    UIALogger.logDebug("Running UIA Scripts for ShazamDev"); 

var device_name = target.name(); 
UIALogger.logDebug("Phone Name : " + target.name()); 

var device_model = target.model(); 
UIALogger.logDebug("Device Model: " + device_model); 

//UIALogger.logDebug("System Name: " + target.systemName()); 

var ios_version = target.systemVersion(); 
UIALogger.logDebug("IOS Version: " + ios_version); 
0

Вот код для метода StrContains в моих утилитах файла

String.prototype.strContains = function(value, ignorecase) { 
    if (ignorecase) { 
     return (this.toLowerCase().indexOf(value.toString().toLowerCase()) != -1); 
    } 
    else { 
     return this.indexOf(value) != -1; 
    } 
};