2017-04-10 35 views
0

我想測試上的下面的 「輸入」 的所有可能組合機器人的行爲:如何測試/鍛鍊android的屏幕旋轉行爲?

具體而言,我希望看到的投入如何影響下面的「輸出」:

  • getWindowManager().getDefaultDisplay().getRotation()(4個可能值)

因此,這將需要測試至少所有15*2*4*4=480可能的輸入狀態。

另外,由於旋轉行爲通常是依賴於歷史的輸入(不僅僅是當前輸入值) , 我想測試(至少)從一個輸入狀態的所有可能的轉換到一個「相鄰」輸入狀態,即 ,即與一個輸入參數不同於給定輸入狀態的輸入狀態。 這樣的輸入的狀態轉換的數量是:

 
     (number of input states) * (number of states adjacent to a given input state) 
    = (15*2*4*4) * ((15-1) + (2-1) + (4-1) + (4-1)) 
    = 480 * 21 
    = 10080 

此外,有時輸出取決於前一個輸出,以及以前和當前 輸入(例如SCREEN_ORIENTATION_LOCKEDSCREEN_ORIENTATION_SENSOR_LANDSCAPE)。 對於給定的輸入狀態可能的輸出的數量可以是1和4之間, 所以這乘以必須由最多4個被測試的轉變的數目:

 
    10080 * 4 = 40320 

這是一個很大的轉變來測試​​,所以測試必須是編程/腳本。 四個輸入參數中的三個直接用於編程控制;不直接控制的是設備的物理方向。

那麼,怎麼會去編寫腳本呢?我可以想到以下方法。

方法#1:具有用於測試的持續時間的腳本化模擬加速度計 更換(物理或模擬)設備中的加速度計。但是,如果我理解正確,模擬加速度計不適用於android。

方法2:使用機器人仿真器,和腳本按壓的「逆時針旋轉」和 「順時針旋轉」使用在主機上的交互的自動化工具(例如AppleScript的/ AutoHotkey的/ xdotool)的按鈕。

還有其他想法嗎?

回答

0

事實證明,這實際上是以下優良問題的重複: How can i simulate accelerometer in android emulator? 具有這種excellent answer從@ user1302884:(?!) 不幸的是,這個問題沒有得到尊重,被關閉的題外話,所以我不會將此標記爲重複。

但這裏的答案是:沒有必要的AppleScript/AutoHotkey的/ xdotool駕駛仿真器的用戶界面; 而是telnet到模擬器,並告訴它你想要的方向「向上」是。

telnet localhost 5554 # or whatever the port is 
    telnet> sensor # to get help on the sensor command 
    telnet> sensor get acceleration 
     acceleration = 0:9.81:0 # if in natural orientation 
    telnet> sensor get acceleration 
     acceleration = -9.81:0:0 # if rotated 90 degrees CW from natural orientation 
    telnet> sensor set orientation -1:1:0 # to set to 45 degrees CW from natural orientation 

這將是很好,如果仿真顯示將出現旋轉指定的度數作爲響應,但你不能擁有一切。