web-dev-qa-db-ja.com

xcodebuildを介してコマンドラインからテストを実行できません

IOSテストケースのコマンドラインを使用してテストケースをビルドして実行しようとしています。私は次のコマンドを与えました:

xcodebuild -target AppEngineTests -configuration Debug -sdk iphonesimulator TEST_AFTER_BUILD=YES clean build

アプリをビルドしますが、テストケースは実行されません。

誰か助けてもらえますか?ありがとう

19
Sunny

nameプロパティにはさらに指定が必要であることがわかりました。

xcodebuild test -workspace #{WORKSPACE_FILE} -scheme #{TEST_SCHEME} -destination 'platform=iOS Simulator,name=iPhone Retina (4-inch),OS=7.0'

最終的に私のために働いたものでした。 iPhoneは制限されているか、予測できませんでした。

別のポスター(引用が見つかりません)が言及したように、「プラットフォーム」はターゲットリストの仕切りに大まかに対応し、「名前」はサブ選択に対応し、OSパラメーターは右側に対応します同じリストのシェブロンの側面から「iOS」を引いたもの。

残念ながら、ドキュメントは示唆に富んでおり、実際には完全または正確ではなく、一見信頼できるように聞こえます。

これがどんなに面倒だったか驚くべきことです。そして、適切な呼び出しが達成された後、それがどれほどうまく機能したか。

18
tooluser

使用しているXcodeのバージョンについてはまだ述べていませんが、質問に「xctest」のタグを付けているので、Xcode5以降を使用していると想定しても問題ないようです。

Xcode 5は、xcodebuild動詞を介して、testでテストを実行するためのサポートを大幅に強化します。ターゲットの代わりにschemedestinationを指定する必要がありますこの動詞を使用する場合、XcodeIDEのTestコマンドと同じように機能するためです。

したがって、たとえば、プロジェクトまたはワークスペースにAppEngineという名前の共有スキームがあり、そのテストスキームアクションが適切に構成されているとすると、次のように使用できます。

xcodebuild test -scheme AppEngine -destination 'platform=iOS Simulator,name=iPad'

最新のiOSを実行するiPadとして構成されたiOSシミュレーターでAppEngineスキーム用に構成されたすべての単体テストを実行します。宛先指定子の構文の詳細については、 xcodebuild man page を参照してください。 (接続されたiOSデバイスでテストを実行するために使用することもできます!)

以前に単体テストを実行するために使用されていたスクリプトは、代わりにtest動詞をユーザーに参照するように調整されました。これらの改善により、誰もが使用する必要があるためです。

12
Chris Hanson

instruments -s devicesを使用して、使用可能なすべてのデバイスのリストを取得できることに注意してください。

また、何らかの理由で文字列を-destination 'platform=iOS Simulator,id=ID_OF_THE_SIMULATOR'として渡す必要があります。これは、key = valueのペア間のスペースを好みません。

1
topLayoutGuide

同様の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つの便利な方法。

0
Sushant

Xcodeビルドでも同様の問題が発生しました。私の場合、問題は、自分のスキームに関連するテストがないことでした。

私のSO回答(図付き) ここ

0
David Hunt