2014-01-09 19 views
16

XCTestとXcode 5のユニットテストを見て、私のユニットテストをXcode 5のInstrumentsで実行する方法を見ていない...Xcode 5のInstrumentsでXCTestベースのテストを実行できますか?

具体的には、テスト中にリークを調べたいこの例では自動化されていますが、明らかに役立つでしょう)。

可能ですか?

+1

注以下quelishの答え@を。これはテスト自体のコンテキストメニューからXcode 7で利用できるようになりました - ありがとうございますXcodeチーム! – Dad

答えて

19

私はこれが最も簡単な方法だと思います。どこかのテストにブレークポイント(私は、セットアップの方法でそれをやってきた)

  • オープン楽器
  • ランで新規ドキュメントを設定し

    1. アプリケーションを開き、ブレークポイントで停止していることを確認してください
    2. InstrumentsのTargetドロップダウンからAttach to Processを選択してプロセスにスクロールします
    3. レコードをクリックしてからXcodeで再開
  • +0

    興味深い。それはうまくいくようです。ありがとう。 – Dad

    +0

    私は同じ問題を見ています。私は単体テストでゾンビを持っているので、何が原因であるかわからない。どのようなプロセスを選択する必要がありますか? –

    +0

    @FergalRooneyあなたのアプリケーションの名前はどんなものでもあります。 ShapeAnimationTestという名前のテストプロジェクトに添付する[screenshot](http://i.imgur.com/XfnTM95.png)です。インストゥルメントでアプリケーションを検索する前に、アプリケーションを実行する必要があるという私の元の回答で言及するのを忘れていました。 – psobko

    3

    私はテストしているMacアプリケーションターゲットに基づいて新しいターゲットを作成し、コンパイルするファイルにxctestクラスを追加しました。

    私はその後にリンクするフレームワークに/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks/XCTest.frameworkを追加しました。

    は、それが$(DEVELOPER_DIR)/Platforms/MacOSX.platform/Developer/Library/Frameworks実行パスの検索パスへのパスです追加しました。

    は、その後、私は次のように追加main.mで:

    XCTestSuite *suite = [XCTestSuite testSuiteWithName:@"My tests"]; 
        [suite addTest:[VideohogCachingTest testCaseWithSelector:@selector(testCompleteSequentialText)]]; 
        [suite run]; 
    

    これは、クラスにtestCompleteSequentialText私はので、私が実行できるように、通常のアプリケーションとして実行するために必要なVideohogCachingTestをテストを走りましたcommand + Rまたはこの場合はcommand + Iでプロファイリングすることによってテストします。私はゾンビを捕まえて問題を追跡することができましたが、これは以前は私の可能性ではありませんでした。 あなたが行うことができ、すべてのテストを実行したい場合:

    XCTestSuite *suite = [XCTestSuite defaultTestSuite]; 
    [suite run]; 
    
    +0

    AllocationでSwiftシンボルを取得するために_プロファイリング_をコンパイルする必要があるようだから、これは役に立ちました。このパスをフレームワーク検索パスにも追加して、プロファイルでデバッグ設定を使用するようにスキームを編集する必要があることに注意してください。 – tmandry

    8

    はここでXcodeの6の下でそれを行うには正しい方法です:

    1)Xcodeプロジェクトでは、「製品」フォルダを明らかにする「xctest」製品を選択し、右クリックして、コンテキストメニューで「Finderで表示」を選択します。

    2)計測器を起動し、あなたが選んだテンプレートで新しい文書を作成します。

    3)文書

    4)移動のために、「...ターゲットを選択してください」とXcodeが/Applications/Xcode.app/Contents/Developer/usr/bin/xctestにあるテストを実行するために使用するツールを選択してください(あなたは)ターミナルでxcrun -f xctestを使用して、この場所を見つけることができます - あなたは意志「Traverse Packages」を有効にして、Xcodeアプリ内をナビゲートする必要があります。

    5)&をFinderから「引数」フィールドにドラッグすると、ステップ1で表示された「.xctest」製品に絶対パスが入力されます。

    6)[選択]をクリックします。

    これで、Instrumentsからユニットテストを実行する準備が整いました。 Xcodeで

    enter image description here

    37

    、右のテストナビゲーターでテストをクリックし、 "プロファイル "テスト名"" を選択します

    instruments profile unit test memory

    +2

    はい!機能要求が機能しました! Xcodeで利用可能になりました。 (Xcode 5にはありませんでした)。 この古い質問を見つけるかもしれない人々に指摘してくれてありがとう。 – Dad

    +3

    これはXcode 8で壊れているようです。メニュー項目はまだありますが、Instrumentsは「すべてのプロセス」だけを表示し、Xcodeはテストを開始しません。 – fzwo

    +0

    Xcode 8では、これはUIテストと一貫してしか動作しない可能性があります。 – quellish

    関連する問題