プロジェクトで単体テストを実行できると思われる「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
使用法メッセージに書かれていることにもかかわらず、-XCTestはあなたが必要とする引数です:
xctest -XCTest MyAppTests/testExample testbundle.xctest
Xctestを直接呼び出すには、ビルドされた製品ディレクトリにDYLD_FRAMEWORK_PATH
およびDYLD_LIBRARY_PATH
を設定する必要がある場合もあります。一般に、Xcodeと同じ引数と環境を使用する必要があります。これは、テストの1つにブレークポイントを設定し、Xcodeで実行してから、arguments
とenvironment
for [NSProcessInfo processInfo]
。
すべてのメモを台無しにしないように、特定のテストのみを実行するようにXcodeのスキームを変更することもできます。 [製品]> [スキーム]> [スキームの編集]で、[テスト]アクションを選択し、テストバンドルを展開します。チェックボックスを使用して実行するテストを選択すると、xcodebuildのテストアクションはこれらのテストのみを実行します。