2011-05-29 14 views
4

私はiOS Development Guide: Unit Testing Applicationsです。しかし、(Command + B)LogicTestsターゲット(「ロジックテストの設定」のステップ8)をビルドしようとすると、「選択した実行先はこのアクションでは無効です」というエラーが表示されます。OCUnit:iPhoneシミュレータを起動せずにテストを実行するには?

LogicTestsのターゲット依存関係にアプリケーションターゲットを追加したので、Command + Uで単体テストを実行できますが、これもiPhoneシミュレータを起動します。

時間を節約するために、&リソースを使用すると、iPhone Simulatorを起動せずにOCUnitテスト(ロジック&アプリケーションテストの両方)を実行できますか?

答えて

1

どのくらいの時間/リソースですか?それらを減らすことに焦点を当てるのではなく、Appleのオリジナルの「論理テスト」のガイドラインをはるかに超えてテストを拡大することに重点を置いています。これらのガイドラインはXcode 4の前に書かれていました。これで論理テストかアプリケーションテストですか? - すべてをテストするだけです。

+1

「今、あなたは論理テストかアプリケーションテストですか」と思うことなくテストを書くことができます。私はなぜ[受け入れテスト](http://en.wikipedia.org/wiki/Acceptance_testing)を[単体テスト](http://en.wikipedia.org/wiki/Unit_testing)から分離したくないのですか? – ma11hew28

+0

Appleが「アプリケーションテスト」と呼んだのは、受け入れテストと同じではありません。私の単体テストは、独立した単位としてビューコントローラを検証します。例:Populate model(おそらくは偽物)。モデルでView Controllerをインスタンス化し、-loadを呼び出して、ロードされているビューをシミュレートします。ビューがモデルを反映していることを確認します。これは単体テストであり、受け入れテストではありません。 ...あなたが参照しているアップルのドキュメントは古く、Xcode 4のテストには当てはまりません。 –

+0

それでは、私は質問を更新しました。「iPhone Simulatorを起動せずにOCUnitテスト(ロジックとアプリケーションの両方のテスト)を実行することは可能ですか?」 – ma11hew28

8

私は単体テストでポップアップするシミュレータの煩わしさを理解しています。私が見つけた最善の救済策は、ユニットテストを開始するときにCommand + Uを実行し、次にCommand + Hを実行することです。シミュレータが表示された後は、Control + Hキーを非表示にします。ほぼ即時に表示されるため、これは視覚範囲から外れる効果的な方法です。

私は次のように起動されシミュレータずに私のモデルクラスをテストし、私のユニットテストを実行するために管理してきました
+3

デスクトップにジャンプするときにフルスクリーンを使用すると、本当に迷惑です。 : –

+1

@ChrisWagner + NSUIntegerMax! –

4

  1. 私はちょうど代わりに、任意のバンドル・ローダーまたはテストホストビルド設定を設定していません私がユニットテストしていた.mファイルをBuild Phases Compile Sourcesに追加しました。

  2. は、私は、使用して、コマンドラインから単体テストを実行しました:

    xcodebuild -verbose -target TheElementsUnitTests -configuration Debug -sdk iphonesimulator5.0 clean build 
    

そうでもないことを確認、なぜこのシミュレータを起動しませんでしたが、それは間違いありませんでした!

+0

これはJenkinsとの継続的な統合を行うときに使用するものです。テストを実行してすべてが合格していることを確認する良い方法のようですが、XCodeのUIから同じことをする方法が見つかりませんでした。しかし、シミュレータを起動する。 –

1

ここで私はのために実行するように設定小さなAppleScriptはテスト行動の設定で出力生成します:

#!/usr/bin/osascript 
activate application "Xcode" 

それはコマンド + Uを押した後、すぐに戻ってのXcodeをもたらします。

P.S.私もバグをオープンし、Appleはそれを重複としてマークしました。だから、彼らは認識している。

+0

これは私にとって完璧に動作します。ありがとう! – hujunfeng

関連する問題