web-dev-qa-db-ja.com

コマンドラインからiOSアプリの個々のXCTest(UI、Unit)テストケースを実行する

コマンドラインインターフェイスからすべてのテストケースの代わりに、iOSアプリのテストターゲットから個別のテストケースまたは個別のテストスイートを実行することは可能ですか?

コマンドラインから xcodebuild を使用して、すぐにテストを実行できます。その場合、選択したテストターゲットに含まれるすべてのテストケースを実行します。

Fastlaneの scan を使用して行うこともできますが、選択したビルドスキームのすべてのテストの実行に制限されていると思います(上記)。xcodebuildと同じです。

Facebookから xctool を使用して特定のテストを実行できますが、xcodebuildを使用せず、シミュレーターのみでの実行に制限され、実際のiOSテストデバイスでは実行できません。

xctest コマンドラインユーティリティを直接実行するためのリファレンスを見つけましたが、ドキュメント化されていない機能であり、DerivedDataをターゲットにしているようです。これは、UIテスト * xctestファイルが別のXCTRunnerバンドルにある であるという事実によって複雑になっています。

29

Xcode 8では、xcodebuild-only-testingパラメーターを使用することが可能になりました。

xcodebuild test -workspace <path>
                -scheme <name>
                -destination <specifier>
                -only-testing:TestBundle/TestSuite/TestCase

このビデオを確認してください: https://developer.Apple.com/videos/play/wwdc2016/409/

enter image description here

77
emoleumassi

特定のテストのみを実行するようにスキームを編集できます。スキームを選択してから、スキームを編集します。表示されるウィンドウで、テストフェーズを選択し、個々のテストを無効/有効にします。

enter image description here

スキームを追加して、テストのサブセットを実行することもできます。コマンドラインからテストを実行する場合、テストに使用するスキームを指定できます(少なくともfastlaneで)。

20
dasdom

私はあなたと同じような状況にあり、私が望むテストケースのセットをトリガーするpythonスクリプトを作成しました。 DataProviderメソッドの実装、失敗したテストケースの再実行、および必要なその他のカスタマイズを徐々に行いました。

あなたが達成したいものに関連するいくつかのステップ。

  1. XCTestCaseにあるtestInvocationsメソッドをオーバーライドして、以下の手順を実行します
    • この方法では、環境変数XXXXを読み取ります。
    • この環境変数は、基本的にコンマ区切りのテストケースメソッド名です。
    • 次に、トリガーするテストメソッドごとにNSInvocationsを作成します。
    • 呼び出しの配列を返します。
  2. 環境変数を渡す方法は?
    • スキームで、XXXXという名前の環境変数を追加します。
    • スキームファイルは標準のxmlファイルです。環境変数にカンマ区切り値が含まれるようにスキームファイルを変更するスクリプトを記述します。

さらに情報が必要な場合は、コメントを追加して返信します。

5
-only-testing:<MyXCTargetForTest>/<MyTestSuite>/<MyTestMethod>
  • MyXCTargetForTest-ターゲット
  • MyTestSuite-class_name
  • MyTestMethod-test_name

たとえば、Test Navigatorのように見える

enter image description here

パラメータには次のタイプがあります

-only-testing:SampleAppTest/SampleAppTest/testExample

また、次を使用してテストをスキップできます:-skip-testing

続きを読む こちら

3
yoAlex5

個々のテストまたはテストクラスを実行するには、ガターの横にあるダイヤモンドをクリックします。これは、行番号をオンにしている場合に表示される行番号のすぐ隣です。

このスクリーンショットでは、マウスがダイヤモンドの上に浮かんでいます。実行されることを示す小さな再生矢印に変更されていることに注意してください。

Hovering Over the Test Diamond

その後、最後に実行したテストを再実行できます ⌃⌥⌘ G

私の知る限り、これはxcodebuildを介して行うことはできません。

3
Joe Masilotti