IOSテストケースのコマンドラインを使用してテストケースをビルドして実行しようとしています。私は次のコマンドを与えました:
xcodebuild -target AppEngineTests -configuration Debug -sdk iphonesimulator TEST_AFTER_BUILD=YES clean build
アプリをビルドしますが、テストケースは実行されません。
誰か助けてもらえますか?ありがとう
name
プロパティにはさらに指定が必要であることがわかりました。
xcodebuild test -workspace #{WORKSPACE_FILE} -scheme #{TEST_SCHEME} -destination 'platform=iOS Simulator,name=iPhone Retina (4-inch),OS=7.0'
最終的に私のために働いたものでした。 iPhone
は制限されているか、予測できませんでした。
別のポスター(引用が見つかりません)が言及したように、「プラットフォーム」はターゲットリストの仕切りに大まかに対応し、「名前」はサブ選択に対応し、OS
パラメーターは右側に対応します同じリストのシェブロンの側面から「iOS」を引いたもの。
残念ながら、ドキュメントは示唆に富んでおり、実際には完全または正確ではなく、一見信頼できるように聞こえます。
これがどんなに面倒だったか驚くべきことです。そして、適切な呼び出しが達成された後、それがどれほどうまく機能したか。
使用しているXcodeのバージョンについてはまだ述べていませんが、質問に「xctest」のタグを付けているので、Xcode5以降を使用していると想定しても問題ないようです。
Xcode 5は、xcodebuild
動詞を介して、test
でテストを実行するためのサポートを大幅に強化します。ターゲットの代わりにschemeとdestinationを指定する必要がありますこの動詞を使用する場合、XcodeIDEのTestコマンドと同じように機能するためです。
したがって、たとえば、プロジェクトまたはワークスペースにAppEngineという名前の共有スキームがあり、そのテストスキームアクションが適切に構成されているとすると、次のように使用できます。
xcodebuild test -scheme AppEngine -destination 'platform=iOS Simulator,name=iPad'
最新のiOSを実行するiPadとして構成されたiOSシミュレーターでAppEngineスキーム用に構成されたすべての単体テストを実行します。宛先指定子の構文の詳細については、 xcodebuild
man page を参照してください。 (接続されたiOSデバイスでテストを実行するために使用することもできます!)
以前に単体テストを実行するために使用されていたスクリプトは、代わりにtest
動詞をユーザーに参照するように調整されました。これらの改善により、誰もが使用する必要があるためです。
instruments -s devices
を使用して、使用可能なすべてのデバイスのリストを取得できることに注意してください。
また、何らかの理由で文字列を-destination 'platform=iOS Simulator,id=ID_OF_THE_SIMULATOR'
として渡す必要があります。これは、key = valueのペア間のスペースを好みません。
同様のxcodebuildエラーの解決策を探してここに着陸しました。補遺と同様に、単一のkey = valを-destinationに渡すこともできます。例:-destination 'platform=iOS'
およびxcodebuildは、スキームで利用可能なすべての代替案を示します。
λ ~/Development/app-ios/ task/JIOS-400-Earl-Grey-Spike* xcodebuild -workspace app.xcworkspace -scheme app -destination 'platform=iOS' -derivedDataPath "build" build-for-testing
User defaults from command line:
IDEDerivedDataPathOverride = /Users/schoudhary/Development/app-ios/build
xcodebuild: error: Unable to find a destination matching the provided destination specifier:
{ platform:iOS }
Missing required device specifier option.
The device type “Generic iOS Device” requires that either “name” or “id” be specified.
Please supply either “name” or “id”.
Available destinations for the "App" scheme:
{ platform:iOS Simulator, id:D248DB01-A852-4360-A9C0-2D71AFE478D7, OS:10.3, name:iPad Air }
{ platform:iOS Simulator, id:CE87AF5A-141C-43DA-AE61-AF53593F37F7, OS:10.3, name:iPad Air 2 }
{ platform:iOS Simulator, id:E93B43E4-D24E-4927-B9EE-0375E15DCBD5, OS:10.3, name:iPad Pro (9.7 inch) }
{ platform:iOS Simulator, id:6D71DB17-0FE2-4D5E-BEE6-CC696445BA11, OS:10.3, name:iPad Pro (12.9 inch) }
{ platform:iOS Simulator, id:F7E37EF4-5E72-438A-A286-216C20158B47, OS:10.3, name:iPhone 5 }
{ platform:iOS Simulator, id:24653844-AE99-4B5B-8332-9FFD2208172F, OS:10.3, name:iPhone 5s }
{ platform:iOS Simulator, id:FD2089A4-BF3F-4F98-8E33-B7EFDCFE5B4D, OS:10.3, name:iPhone 6 }
{ platform:iOS Simulator, id:6EF0DFBD-E99E-4EB3-9C51-6E749F41B6E7, OS:10.3, name:iPhone 6 Plus }
{ platform:iOS Simulator, id:846E631C-6285-4B91-9BA6-1AB6E66C88DB, OS:10.3, name:iPhone 6s }
{ platform:iOS Simulator, id:A6943ADC-F6EF-42F6-9958-D966DFC419FC, OS:10.3, name:iPhone 6s Plus }
{ platform:iOS Simulator, id:B41ABED0-7554-438A-97AC-F34943ED4D79, OS:10.3, name:iPhone 7 }
{ platform:iOS Simulator, id:20F1582C-0D19-4F42-9DAD-43138FB923B9, OS:10.3, name:iPhone 7 Plus }
{ platform:iOS Simulator, id:683BB5CA-E0A8-4CE4-B0DD-AED4C4295B90, OS:10.3, name:iPhone SE }
Ineligible destinations for the "App" scheme:
{ platform:iOS, id:dvtdevice-DVTiPhonePlaceholder-iphoneos:placeholder, name:Generic iOS Device }
{ platform:iOS Simulator, id:dvtdevice-DVTiOSDeviceSimulatorPlaceholder-iphonesimulator:placeholder, name:Generic iOS Simulator Device }
正しい目的地を取得するためのもう1つの便利な方法。
Xcodeビルドでも同様の問題が発生しました。私の場合、問題は、自分のスキームに関連するテストがないことでした。
私のSO回答(図付き) ここ