【问题标题】:Why does MonkeyRunner fail when called using TeamCity为什么使用 TeamCity 调用 MonkeyRunner 会失败
【发布时间】:2011-09-14 20:36:11
【问题描述】:

我有一个 Monkeyrunner 脚本,它连接到 Android 设备并在其上部署 APK。

serial = '12345JKL'
device = MonkeyRunner.waitForConnection(deviceId=serial)
device.installPackage(path_to_apk)

当我使用 Windows 命令外壳执行脚本时,这可以完美运行。

"C:\dev\android\tools\monkeyrunner.bat" "C:\dev\my_script.py" -psome_parameter

问题是我想让 my_script.py 在同一台 PC 上由 TeamCity(Enterprise 6.0.3)构建配置执行:这失败了。 请在此处找到堆栈跟踪:http://pastebin.com/CjWy95c3

首先我认为 TC 弄乱了脚本的参数。但是来自 TC 构建日志的命令

[00:55:12]: Starting: "C:\dev\android\tools\monkeyrunner.bat" "C:\dev\my_script.py" -psome_parameter
in directory: C:\some_dir

与命令外壳中的相同,因此当我将命令复制到命令外壳中时,脚本可以连接到设备并正常工作,而C:\some_dir 是我的当前目录。

我无法在 TC 之外重现此错误。

我想强调的是,这一切都发生在同一台 PC (Win 7 x64) 上。该脚本在从命令 shell 执行时有效,但在由 TC 构建配置触发时失败(总是在尝试连接到设备时)。

我想不出发生这种情况的原因,如果有人能指出我正确的方向,我会非常高兴。

在此先感谢

编辑:事实证明,问题不仅限于MonkeyRunner.waitForConnection(),而且在调用MonkeyRunner.sleep(5) 时也会发生。 Stacktrace

MonkeyRunner 和 TeamCity 会不会相处融洽?

【问题讨论】:

    标签: android teamcity monkeyrunner


    【解决方案1】:

    这可能是由您的导入问题引起的。您的导入问题可能是因为 TeamCity 调用 MonkeyRunner 的方式。我猜它与当前目录被搞砸有关。尝试使用

    import os
    os.chdir("path")
    

    更改 .py 脚本顶部的当前目录。 (在导入 monkeyrunner 之前)我会尝试将其更改为使用 MonkeyRunner 的目录。

    【讨论】:

    • 感谢某人的建议。但问题似乎出在 TC 代理上。
    【解决方案2】:

    我和一位同事调查了三天后,我们找不到这个问题的根源。但是当我们使用另一台机器作为构建代理时,问题就消失了。我们仍然不知道是什么导致了这个 NullPointerException。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      相关资源
      最近更新 更多