web-dev-qa-db-ja.com

Xcode 5のInstrumentsでXCTestベースのテストを実行することは可能ですか?

XCTestとXcode5の単体テストを見ていて、Xcode5のInstrumentsで単体テストを実行する方法がわかりません...

具体的には、テスト中にリークを探したいと思います(この場合、これを自動化する必要はありませんが、明らかに便利です)。

可能?

24
Dad

これが最も簡単な方法だと思います。

  1. テストのどこかにブレークポイントを設定します(私はセットアップメソッドでそれを行ってきました)
  2. 機器で新しいドキュメントを開く
  3. アプリケーションを実行し、ブレークポイントで停止していることを確認します
  4. InstrumentsのTargetドロップダウンから、At​​tach to Processを選択し、プロセスまでスクロールダウンします。
  5. レコードをクリックして、XCodeで再開します
22
psobko

Xcodeで、テストナビゲーターでテストを右クリックし、[プロファイル "TestName"]を選択します。

instruments profile unit test memory

55
quellish

Xcode6でそれを行う正しい方法は次のとおりです。

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

2)Instrumentsを起動し、選択したテンプレートを使用して新しいドキュメントを作成します。

3)ドキュメントに対して「ターゲットを選択...」を実行します

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

5)Finderからステップ1で表示された「.xctest」製品の「引数」フィールドにドラッグアンドドロップします。これにより、絶対パスが入力されます。

6)「選択」をクリックします。

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

enter image description here

10
Pol

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

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

次に、そのパス$(DEVELOPER_DIR)/Platforms/MacOSX.platform/Developer/Library/FrameworksRunpath Search Pathsに追加しました。

次に、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];
4
Pellet