在 Xcode 中,如何在运行测试时不运行某些运行脚本构建阶段?

gup*_*ron 5 testing xcode aggregate target ios

我的项目当前已设置,以便 MyApp 目标包含一些运行脚本构建阶段。这些脚本取决于构建阶段的顺序。例如,有一个脚本在复制捆绑资源之前运行,另一个脚本在复制捆绑资源之后运行。

我的测试目标取决于 MyApp,因此当我运行测试(产品菜单、测试)时,我不想包含其中一些脚本,因为它会减慢测试速度。

我想创建一个包含 MyApp 目标的聚合目标。然后将测试时我不想运行的脚本从 MyApp 移出并移入聚合。但是,我不知道如何配置这些脚本运行时的相同顺序。

有没有办法做到这一点?或者也许是一个更好的解决方案?

kur*_*amo 2

这取决于您的脚本在做什么:

  • 您可以创建一个预操作(转到“编辑方案”) - 您可以在其中添加运行脚本,并且仅在运行所选方案时才会执行该脚本。您必须知道的是:预操作位于另一个线程上,因此如果您想停止构建过程,它将无法工作

  • 如果可能:您可以检查脚本是否“调试”或“发布”,如果足以检查这两个选项,则可以使用它,例如:

    wantedConfig="Debug"; currentConfig="$CONFIGURATION"    
    if [ $currentConfig=$wantedConfig ]; then
      echo "Now Im on a debug mode and will do all you want here";
    fi
    
    Run Code Online (Sandbox Code Playgroud)
  • 您还可以创建自己的环境变量,例如:

测试模式=是

..并像上面的例子一样使用它:

当前配置=“$TEST_MODE”