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

Ios 在Xcode中,如何在运行测试时不运行某些运行脚本构建阶段?,ios,xcode,testing,aggregate,target,Ios,Xcode,Testing,Aggregate,Target,我的项目目前正在设置中,因此MyApp目标包括几个运行脚本构建阶段。这些脚本取决于构建阶段的顺序。例如,有一个脚本在复制捆绑资源之前运行,另一个脚本在复制捆绑资源之后运行 我的测试目标取决于MyApp,所以当我运行测试(产品菜单,测试)时,我不想包含其中一些脚本,因为这会减慢测试速度 我想创建一个包含MyApp目标的聚合目标。然后将测试时我不想运行的脚本移出MyApp并移动到聚合中。但是,我不知道如何通过这样做来配置这些脚本的运行顺序 有办法做到这一点吗?或者是一个更好的解决方案 这取决于脚本的

我的项目目前正在设置中,因此MyApp目标包括几个运行脚本构建阶段。这些脚本取决于构建阶段的顺序。例如,有一个脚本在复制捆绑资源之前运行,另一个脚本在复制捆绑资源之后运行

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

我想创建一个包含MyApp目标的聚合目标。然后将测试时我不想运行的脚本移出MyApp并移动到聚合中。但是,我不知道如何通过这样做来配置这些脚本的运行顺序


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

这取决于脚本的作用:

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

  • 如果可能的话:您可以在“调试”或“发布”时检查脚本 如果仅检查以下两个选项就足够,则可以使用此选项:

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

测试模式=是

…并使用上面的示例:

currentConfig=“$TEST\u MODE”


这取决于您的脚本执行的操作:

您可以创建一个预操作(转到“编辑方案”)-在那里您可以添加 一个运行脚本,它将仅在您选择运行时执行 计划。你要知道的是:预操作在另一个线程上, 因此,如果您想停止构建过程,它将不起作用

如果可能的话:您可以在“调试”或 “释放”你可以使用它,如果它足以检查这两个 例如:

wantedConfig="Debug"; currentConfig="$CONFIGURATION"    
if [ $currentConfig=$wantedConfig ]; then
  echo "Now Im on a debug mode and will do all you want here";
fi
wantedConfig=“调试”;currentConfig=“$CONFIGURATION”如果[ $currentConfig=$wantedConfig];然后回显“现在我处于调试模式 在这里你想干什么就干什么”;fi您还可以创建自己的 环境变量,如:

测试模式=是

…并使用上面的示例:

currentConfig=“$TEST\u MODE”

逻辑是存在的,但即使配置不同,它也会不断进入。经过一些调试和搜索后,这就是工作代码段:

wantedConfig="PROD"
currentConfig="${CONFIGURATION}"  
echo "currentConfig = $CONFIGURATION"
if [ "$currentConfig" = "$wantedConfig" ]; then
    echo "begin action"
fi

我相信运行脚本只有在安装选项时才有运行脚本。这会对你有帮助吗?@PetahChristian这不会完全有帮助,因为每个构建都需要至少一个脚本来运行,而不仅仅是在安装时。完全引用另一个答案有什么意义?如果这个答案是为了更正它,你可以直接链接到它。正如我所说,当我试图复制和粘贴给定的代码段时,它会一直进入if,即使实际值不同。我不知道为什么它不起作用,我对脚本语法和其他东西不太熟悉。但是经过一些调试(我在if中的=之间添加了空格),现在它可以工作了。我附上这个片段是为了帮助那些没有额外时间思考它到底出了什么问题的人。