2017-12-15 22 views
0

CI 파이프 라인을 구성하고 유닛 테스트를 자동으로 실행하려고 시도하고 있지만 현재 작업 공간에 대한 스키마가없는 상태로 처리 중입니다. 나는 Xcode/Manage Schemes 등을 사용하여 생성 할 수 있음을 알고 있습니다. 그러나 자연 이래로 테스트 루틴의 자동화 기능으로 인해 스키마 작성 단계를 자동화하는 방법이 있는지 파악하고 있습니다.명령 줄에서 Xcode 프로젝트에 대한 스키마를 자동 작성하는 방법이 있습니까

+0

로컬 컴퓨터에서 생성 한 다음 모든 항목을 커밋하고 CI로 보내기 전에 해당 항목이 "공유"되어 있는지 확인해야합니다. –

+0

아래 나는이 필요에 대한 해결책을 제시하고, 그런 일을 할 필요가없고 완전히 자동이다. 어쨌든 도움을 요청하십시오. – YadirHB

답변

0

먼저 Xcode 프로젝트를 테스트하려면 테스트를 실행하기 위해 구성된 하나 이상의 스키마를 사용해야합니다. 그 후 xcodebuild 명령 줄에서 테스트를 실행해야합니다. 따라서 두 가지 단계를 수행해야합니다. 먼저 필요한 체계를 자동으로 생성하고 두 번째로 테스트 구성 된 체계에 대한 테스트를 실행합니다.

1- 루비 보석 CocoaPods/Xcodeproj을 스크립트로 사용하여 스키마 생성을 수행 할 수있었습니다. 다음 코드는 모든 대상에 대한 계획을 작성

#!/usr/bin/env ruby 
# fix_schemes.rb 

require 'xcodeproj' 
project_path = '/your_path/your_project.xcodeproj' 
project = Xcodeproj::Project.open(project_path) 

1 단계 (OK)

2는 명령 줄에서 테스트를 실행하는 쉘 스크립트를 작성합니다. 이 스크립트 수신은 테스트가 실행되어야하는 스킴을 포함하도록 편집되거나, 모든 테스트가 통과하거나 하나가 실패 할 때까지 스킴별로 스킴을 반복 할 수 있습니다.

#!/bin/bash 
#!/bin/bash -e 
# build-test.sh 

# Set bash script to exit immediately if any commands fail. 
set -e 

## declare the schemes to test 
declare -a arr=("Scheme01UnitTests" "Scheme02UnitTests") 

## Parameters 
## -s The SDK to use (iphoneos, iphonesimulator) default "iphonesimulator" 
## -o The simulator Operating System, default 11.2 
## -c Configuration (Debug, Release), default Debug 


SDK="iphonesimulator" 
OS=11.2 
CONFIG="Debug" 

#Parsing arguments 
while getopts "s:o:c:" option; do 
    case $option in 
    s) SDK=$OPTARG 
    ;; 
    o) OS=${OPTARG} 
    ;; 
    c) CONFIG=${OPTARG} 
    ;; 
    esac 
done 

echo "Using OS: $OS" 
echo "Using SDK: $SDK" 
echo "Using Configuration: $CONFIG" 

## now loop through the above array 
for s in "${arr[@]}" 
    do 
     echo "***************************************" 
     echo "** Test $s" 
     echo "***************************************" 
     cmd="set -o pipefail && env \"NSUnbufferedIO=YES\" xcodebuild -workspace MyWorkspace.xcworkspace -scheme $s -sdk $SDK -destination 'platform=iOS Simulator,name=iPhone 6s,OS=$OS' -configuration $CONFIG test | xcpretty -r junit --no-color -o 'build/reports/TEST-${s}.xml'" 

     eval $cmd 
    done 
exit 0; 

2 단계 (OK)이 도움이

희망!