web-dev-qa-db-ja.com

Xcode 5を使用してコマンドラインからxctestを実行するにはどうすればよいですか?

プロジェクトで単体テストを実行できると思われる「xctest」というコマンドラインツールを見つけました。この実行可能ファイルはここにあります:

/Applications/Xcode.app/Contents/Developer/usr/bin/xctest

Xctestバンドルでこの実行可能ファイルを実行しようとすると、次のものを使用します。

$ ./xctest /Users/myusername/Library/Developer/Xcode/DerivedData/MyApp-abcdefghijklmnop/Build/Products/Debug/MyAppTests.xctest

ただし、次の出力が得られます。

Test Suite '(null)' started at 2013-11-14 21:16:45 +0000
Test Suite '(null)' finished at 2013-11-14 21:16:45 +0000.
Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.001) seconds

私の知る限り、xctestのマニュアルページはありませんが、コマンドラインで./xctestと入力するだけで次のようになります。

Usage: xctest [--test Self | All | None | <TestCaseClassName/testMethodName>] <path of unit to be tested>

特に、テストクラスの特定のメソッドだけをテストできるようにしたいので、このxctestコマンドを使用したいと思います。

次のように、コマンドラインからすべてのテストを実行する方法があることはわかります。

$ xcodebuild test -scheme MyApp

これにより、すべての単体テストが実行され、正しく機能します(xctestを使用する場合とは異なり、単体テストの結果が表示されます)。しかし、次のようなコマンドラインから単一のテストメソッドを実行できることに興味があります。

$ ./xctest --test MyAppTests/testExample  /Users/myusername/Library/Developer/Xcode/DerivedData/MyApp-abcdefghijklmnop/Build/Products/Debug/MyAppTests.xctest
16
Chris Livdahl

使用法メッセージに書かれていることにもかかわらず、-XCTestはあなたが必要とする引数です:

xctest -XCTest MyAppTests/testExample testbundle.xctest

Xctestを直接呼び出すには、ビルドされた製品ディレクトリにDYLD_FRAMEWORK_PATHおよびDYLD_LIBRARY_PATHを設定する必要がある場合もあります。一般に、Xcodeと同じ引数と環境を使用する必要があります。これは、テストの1つにブレークポイントを設定し、Xcodeで実行してから、argumentsenvironment for [NSProcessInfo processInfo]

すべてのメモを台無しにしないように、特定のテストのみを実行するようにXcodeのスキームを変更することもできます。 [製品]> [スキーム]> [スキームの編集]で、[テスト]アクションを選択し、テストバンドルを展開します。チェックボックスを使用して実行するテストを選択すると、xcodebuildのテストアクションはこれらのテストのみを実行します。

6
Matt Stevens