CI 파이프 라인을 구성하고 유닛 테스트를 자동으로 실행하려고 시도하고 있지만 현재 작업 공간에 대한 스키마가없는 상태로 처리 중입니다. 나는 Xcode/Manage Schemes 등을 사용하여 생성 할 수 있음을 알고 있습니다. 그러나 자연 이래로 테스트 루틴의 자동화 기능으로 인해 스키마 작성 단계를 자동화하는 방법이 있는지 파악하고 있습니다.명령 줄에서 Xcode 프로젝트에 대한 스키마를 자동 작성하는 방법이 있습니까
0
A
답변
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)이 도움이
희망!
로컬 컴퓨터에서 생성 한 다음 모든 항목을 커밋하고 CI로 보내기 전에 해당 항목이 "공유"되어 있는지 확인해야합니다. –
아래 나는이 필요에 대한 해결책을 제시하고, 그런 일을 할 필요가없고 완전히 자동이다. 어쨌든 도움을 요청하십시오. – YadirHB