2017-04-10 46 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 

这将是很好,如果仿真显示将出现旋转指定的度数作为响应,但你不能拥有一切。