在无头机器上使用 Jenkins 进行 Android 单元测试
我正在收集信息,以便在无头机器上设置 Jenkins CI 服务器以进行 Android 单元测试。 但是由于Android单元测试需要模拟器才能运行,因此似乎需要图形环境,或者是否可以在非图形模式下运行模拟器? 关于 Jenkins Android Emulator 插件 的 wiki 条目在这个问题上也不是很有启发,它指出:
如果您有运行无头的构建从服务器(例如不运行 X 服务器的 Linux 服务器),建议利用 Jenkins 的 Xvnc 插件。 启用此插件后,您可以在无头从设备上并行运行多个 Android 模拟器,同时保持“显示模拟器窗口”选项处于启用状态。
这是否意味着模拟器可以在禁用“显示模拟器窗口”选项的情况下在无头计算机上运行?
如果需要图形环境,大多数消息来源提到的最简单的解决方案是使用 Xvnc 插件,该插件使用 Xvnc 服务器来提供 X 实例。 但是,如果我理解正确的话,这个 Xvnc 服务器必须在另一台具有可用 X 的计算机上运行,或者它是否在提供 X 实例的无头计算机上运行?
I'm gathering information to set up a Jenkins CI server on a headless machine for Android unit testing.
But as Android unit tests require an emulator to run, a graphical environment seems required, or is it possible to run an emulator in non-graphical mode?
The wiki entry on the Jenkins Android Emulator plugin is also not very enlightening on this matter, it states:
If you have build slaves running headless (e.g. Linux servers that don't run an X server), it is recommended to take advantage of Jenkins' Xvnc Plugin.
With this plugin enabled, you can run multiple Android emulators in parallel on a headless slave, while keeping the "Show emulator window" option enabled.
Does this imply that emulators can be run on a headless machine with the "Show emulator window" option disabled??
If a graphical environment is required the easiest solution most sources speak of is by using the Xvnc plugin which uses an Xvnc server to provide an X instance.
But if I understand correctly this Xvnc server must run on another machine with X available, or does it run on the headless machine providing an X instance from there?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我的项目中有类似的设置。但我选择 Robolectric 进行单元测试。
在 Jenkins 上运行 Robolectric 测试非常容易。
您可能需要使用模拟器在无头 Jenkins 服务器上进行系统测试。
我仍然没有在无头服务器上运行系统测试的解决方案。
I have a similar setup in my project. But I chose Robolectric for my unit tests.
It is quite easy to run the Robolectric tests on Jenkins.
You may have to go for emulator for your system tests on a headless Jenkins server.
I still do not have a solution to run the system tests on a headless server.
作为该插件的作者,我可以告诉你是的:你可以在无头机器上运行模拟器,无需图形环境 - 只需取消选中“显示模拟器窗口”选项即可。
这相当于在命令行上使用“
-no-window
”选项运行 Android 模拟器。我将更新 wiki 以使其更加清晰;感谢您提出来。
As the author of that plugin, I can tell you yes: you can run emulators on a headless machine, without a graphical environment — just uncheck the "Show emulator window" option.
This is the equivalent of running the Android emulator with the "
-no-window
" option on the command line.I will update the wiki to make this clearer; thanks for bringing it up.