当前位置: 首页 > 面试题库 >

如何获得Xcode 5在Jenkins从站上运行iOS单元测试?

高豪
2023-03-14
问题内容

我们一直在使用带有Xcode插件的Jenkins来运行iOS应用程序的持续集成,包括自动执行和报告单元测试。在Linux机器和运行Xcode
4.6.3的Mac从属计算机上使用Jenkins可以很好地工作。

现在,我们正在寻求将安装程序更新为Xcode 5,以支持定位iOS 7,并遇到了以下问题。

首先,单元测试根本不会运行,因为我们使用的是Xcode 5中不再支持的Xcode
4中的RunUnitTests脚本。我按照Xcode的建议,通过为单元设置了合适的方案来解决了工作空间,从而解决了这个问题。测试目标。

然后,我在Jenkins作业的Xcode步骤中配置了自定义xcodebuild参数,test -destination platform=${DESTINATION_PLATFORM},name=${DESTINATION_NAME},OS=${DESTINATION_OS}以使其能够运行单元测试。

如果我运行xcodebuild命令行,即Jenkins的Xcode插件在我自己的计算机上的Terminal中运行,则单元测试将运行,但是当Jenkins作业运行时,它在尝试运行单元测试时会失败或挂起。

我怀疑这是因为使用Xcode 5和测试buildaction而不是RunUnitTests脚本,单元测试现在在iOS
Simulator中运行,这需要交互式会话,并且Jenkins从属进程正在通过Jenkins主服务器(Linux)上的SSH运行。如果我使用Jenkins用于SSH的帐户登录到从属计算机,则可以看到应该运行单元测试时iOS
Simulator启动,但是测试似乎没有运行并且作业挂起。如果我没有登录从机,则Jenkins作业无法运行单元测试。

是否有任何方法可以使iOS单元测试通过SSH在Jenkins从属服务器上运行,如果没有,那么在必须使用Xcode
5构建项目时如何保持单元测试执行自动化的任何建议?


问题答案:

根据答案,我提出了一个完整的解决方案。

首先,Mac从站无法使用SSH启动,必须​​使用交互式会话手动启动,然后始终保持登录状态。在我的情况下,奴隶实际上是无头的,所以这是进一步的复杂化。

这是我用来使所有这些操作都可用的步骤。

  1. 在配置了唯一标签的Jenkins主服务器上创建一个新的从属节点(我选择“ xcode-unittests”),并将启动方法设置为“通过Java Web Start启动从属代理”。

  2. 通过屏幕共享(VNC)登录到Mac从属设备并启动从属代理。就我而言,我无法从浏览器启动从属服务器,可能是因为我的浏览器没有运行小程序所需的Java插件。因此,我使用了命令行javaws http://{jenkins-host}/computer/{slave-name}/slave-agent.jnlp。为了使此操作更可靠,我将此命令配置为在每次交互式登录计算机时都在“系统偏好设置”,“用户和组”,“登录项”下自动运行。

  3. 退出屏幕共享而不注销Mac从站。即使没有人实际使用计算机,这也可以使运行从属代理的交互式会话保持活动状态。

为了使单元测试在不提示用户的情况下运行,我还必须sudo DevToolsSecurity -enable在Mac从属计算机上运行。这使Xcode可以与iOS模拟器进行交互,而无需每次都交互式地请求许可。

如果从属计算机重新引导,则必须有人登录Mac从属服务器才能使该从属代理再次运行。因此,我还使基于SSH的从服务器保持活动状态。我将Jenkins作业拆分为多个单独的作业,以构建应用程序和运行单元测试。用于构建应用程序的作业被配置为在基于SSH的从属服务器上运行,而用于运行单元测试的作业被配置为在上述交互式从属节点上运行。这样,如果交互式从属设备出现故障,则仅会影响单元测试,而不会构建产品。



 类似资料:
  • 问题内容: 我正在尝试从Jenkins运行TestNG测试(在一个包含的Java项目中),但是没有运气。 似乎Jenkins的TestNG插件(https://wiki.jenkins-ci.org/display/JENKINS/testng- plugin )仅发布TestNG测试的结果,但实际上不运行测试类…或我错了吗? 无论如何,我如何在Jenkins的TestNG项目中实际运行TestN

  • 我试图从Jenkins那里运行TestNG测试(在一个包含Java的项目中),但没有成功。 看起来好像是Jenkins的TestNG插件(https://wiki.jenkins-ci.org/display/JENKINS/testng-plugin)只发布TestNG测试的结果,但不实际运行测试类。。。还是我错了? 在任何情况下,我如何在与Jenkins的TestNG项目中实际运行TestNG

  • 问题内容: 有人尝试过将Dojo DOH单元测试与Jenkins集成吗? 我想执行以下操作,但是如果已经完成,则不想重新发明它。所以,我在想: 从Jenkins的构建后步骤开始DOH测试,然后等待结果 在无头浏览器(例如Crowbar)中自己运行测试 从Crowbar返回的HTML解析成功/错误计数 查找(或编写)一个Jenkins插件,该插件将(a)如果测试失败会导致构建失败;(b)呈现测试结果

  • 问题内容: 我希望每晚和每次提交svn时都为C#应用程序运行自动化的NUnit测试。 Jenkins-CI可以做到这一点吗? 是否有在线教程或操作指南文档,其中记录了我可以查看的类似设置? 问题答案: 我需要做的正是您要做的,这是我设置Jenkins的方法: 将NUnit插件添加到Jenkins 在您的项目中,转到 配置 -> 构建 -> 添加构建步骤 在下拉菜单中,向下滚动至-> 执行Windo

  • 问题内容: 通过命令行运行Xcode单元测试用例时,我可以看到以下日志。 命令: 日志: 当通过jenkins execute shell执行时,如果没有显示详细日志,则显示以下信息。 如何在Jenkins环境中获取测试用例的详细信息? 问题答案: 问题已解决, 实际上,Jenkins是以不可见的来宾用户身份运行的,没有访问系统资源的许可。因此,该构建未安装在模拟器中。 我使用了Jenkins应用

  • 我通过以下命令克隆了Guava的存储库: 不幸的是,我收到了以下错误(在这里可以查看整个输出)。 如何运行Guava的单元测试?