3

私はXcode(および一般的にはMac)を初めて使用し、コードベースの一部を移植してOSXとiOSの両方で実行しようとしています。Google C ++テストフレームワーク(Googleテスト)に対して作成された単体テストの大規模なセットがあります。フレームワークを正常にコンパイルし、いくつかのテストを実行できますが、Xcode内から色付きの出力を表示する方法がわかりません。

Visual Studioで[実行]をクリックすると、テストに合格したか失敗したかが一目でわかるコンソールウィンドウ(色付き)がすぐに表示されます。

「スクリプトの実行」「ビルドフェーズ」を設定できましたが、ログナビゲーターに出力されるだけで、色や固定幅の出力が消去され、テストに合格したかどうかが一目でわかりにくくなります。 。また、テストの実行後にログを表示する方法が見つかりません。これを行うと、「すべての出力」ウィンドウに何も表示されません。

XcodeColorsを試してみましたが、ANSIカラーコードを使用するスクリプトでは機能しないようです。

この時点で、これがXcode内で単純に実行できない場合でも、私は驚かないでしょう。それは理想的ですが、そうでない場合は、独立したターミナルウィンドウでテストを実行する「スクリプトの実行」を作成することは可能ですか?色はそこでうまく機能します。

助けてくれてありがとう!

4

2 に答える 2

3

ログウィンドウのテキストを色付けするツールへのリンクは次のとおりです。これは無料で、ソースはgithubにあるので、どのように機能するかを理解できます。最初のリンクは、単純なANSIコードを使用して作業を行うことを示しています。

http://deepitpro.com/en/articles/XcodeColors/info
https://github.com/robbiehanson/XcodeColors#readme

Xcode内から実行を開始するには、プロジェクトに新しいターゲットを追加する必要があります。ターゲットを追加するには、プロジェクトをクリックすると、画面の下部に[ターゲットの追加]ボタンがあります。あなたが何を実行しているのか正確にはわかりませんが、あなたの質問に基づいた私の最善の推測は次のとおりです。

  • MacOSX / Application/Cocoa-AppleScriptまたはコマンドラインツール-ユニットテストを実行する簡単なスクリプトまたはプログラムを作成します。
  • MacOSX/その他/外部ビルドシステム-引数を使用して外部の「make」プログラムを実行できます。

単体テストを実行する方法が決まったら、単体テストからの出力をログウィンドウにルーティングする方法を理解する必要があります。Google Testプロジェクトを編集して使用できるNSLog()ようになれば、それが最も簡単な解決策のように思われます。独自のロギングメソッドを作成し、ANSIカラー化を実行してから、最終的なテキストをに送信することができますNSLog()

追加:OK。興味深い発見...始める前にすべて読んでください。何をすべきかは次のとおりです。

AppleScriptエディタを起動します。これはLaunchPadにあります。次のスクリプトを貼り付けます。

tell application "Terminal"
    activate
    do script "<your commands>" in window 1
end tell

必要に応じて、「doscript」行を繰り返すことができます。これを使用して、単体テストを実行します。スクリプトエディタで、[名前を付けて保存... / File Format = Script]を実行し、ドキュメントディレクトリなどの安全な場所に保存します。これにより、「UnitTests.scpt」のようなファイルが作成されます。

次に、iOSプロジェクトに移動します。左上のプロジェクトを選択します。[ビルドフェーズ]タブの上部中央を選択します。右下の[ビルドフェーズの追加]ボタンをクリックします。これが興味深い部分です。

Shellをそのままにします( "/ bin / sh")。1行追加します。

osascript ~/Documents/UnitTests.scpt

これにより、ビルドのたびにスクリプトが実行されます。

しかし、ここに私が見つけた興味深い部分があります。[ビルド設定](上中央)をクリックします。すべてが選択されていることを確認します(基本ではありません)。リストを下にスクロールして、単体テストを見つけます。テストホストを開きます。デバッグの横にある+を押します。osascript上記のコマンドをここに置くこともできます。ここで単体テストを実行できる可能性があります。実行できる場合は、出力がログに表示される可能性があります。何が起こるか教えてください。

于 2012-08-22T01:29:28.050 に答える
0

私はJava:JUnit + JCodecoverage、モバイルアプリケーション:AndroidおよびiPhoneに精通していますが、TDDを使用して開発するのは面倒でしたが、開始したい場合は:

JUnitTestingオプションをオンにしてHelloWordアプリを作成します。[単体テストを含める]をオンにします。

ここに画像の説明を入力してください

これにより、テストアプリ/ターゲットが作成され、実行できるようになります。Androidでも同じことが言えます。「テストプロジェクト」を作成する必要があります。作成して動作を忘れたら、他にもあります。-Xcode(4.4)の[再生]ボタンを長押しすると、次のようになります。ドロップダウンメニュー:実行、テスト、プロファイル、分析。

Shift + Cmd + 4を押してスクリーンショットを撮ると変更されるため、これらを表示することはできませんが、ここでは変更されたメニューのように見えます。 ここに画像の説明を入力してください

IMHO:銀行、外国為替、その他の金融または軍事(高セキュリティソフトウェア)の場合、99%以上のコードカバレッジでテスト駆動開発を使用しますが、これらの単純な3〜4のWebサービスは、ブラウザーで利用可能な公開データを表示するモバイルアプリを呼び出しますテストを開発して維持するのは時間の無駄です!

多くの場合、インターネット接続の有無にかかわらずテストする必要があります。WI-FI接続の場合は最悪ですが、ルーターはIPを提供しないか、電話を出さないのですが、電話の状態を尋ねると、接続されています...

単体テストからテストするのが難しいGUIフロー。ここで、/は私にとって便利です。Webサービスから取得したデータと内部キャッシュとの同期です。私が見るように、マヌーテストでそれをすることはまだ安いです。

于 2012-08-21T23:05:07.993 に答える