2012-05-03 13 views
0

私はシーダーをセットアップしようとしているし、それを動作させるのが難しいです。私はgithubの指示に従おうとしています。iosアプリケーションのbddテスト用にcedarを設定するにはどうすればよいですか?

私はxcode 4.2を使用しています。

私はわからないんだけど最初のステップは、これがある:「あなたのプロジェクトであなたのテストのためのターゲット、このターゲットUISpecs、または似たような名前を付けます。 『

アプリケーション』ココアタッチの作成」

a)シーダーでテストするときにメインアプリケーションにARCを使用できるかどうかはわかりません。 b)私は、シーダー自体を作るためにARCを使用することができないと確信しています。私はしたいとは思いません。 c)私の仕様が収まるテストプロジェクトにARCを使用できるかどうか分かりません。 d)スペックを格納するアプリケーションを作成するために使用するアプリケーションテンプレートがわかりません。

私は、ARCと単一ウィンドウアプリケーションテンプレートを使用して新しいメインアプリケーションを作成しました。空のアプリケーションテンプレートを使用して、ARCなしで仕様書を保存するための新しいアプリケーションを作成しました。

私の仕様を収めたテストアプリケーション用のplist.infoファイルを開くと、 "Main nib file base name"オプションが表示されません。だから私はこのステップを無視しています。

今、私はステップに来る:

「プロジェクトにシーダー、iOSの静的なフレームワークを追加し、それをあなたのUISpecsターゲットをリンクします。」

私はspecsアプリケーションビルドターゲットに行って、〜/ライブラリ/ Developer/Xcode/DerivedData/Cedar-borwneaydydgodbtmfyaccykqxn/Build/Products/Debug-iphoneos/libCedar-StaticLib.aファイルをプロジェクトに追加しました。 [ビルド段階]タブの下の[ライブラリとのリンクバイナリ]タブをクリックします。

次に、-ObjC、-lstdC++および-all_loadを、UISpecsターゲットのその他のリンカーフラグのビルド設定に追加しました。

次に、スペックを収容するアプリケーションの下で、私はTestSpec.mと呼ばれる新しいファイルを作成し、失敗した仕様を取得しようとする試みで、それにこのコードを追加:私がしようとした

#import <Cedar/SpecHelper.h> 

SPEC_BEGIN(FooSpec) 
describe(@"Foo", ^{ 
    it(@"should do something", ^{ 
     expect(0).to(equal(1)); 
    }); 
}); 
SPEC_END 

シミュレータでspecsプロジェクトを実行すると、ARCを使用するときにallocおよびautoreleaseがサポートされていないというエラーが表示されます。これは私の主なアプリケーションがARCを使用できないことを意味します。今回はARCを使用して仕様アプリケーションを削除して再試行しました。

ARCに準拠するために、autorelease poolとrelease codeをmain.mコードから削除しました。

私は今、2つのビルドエラーを取得:

main.mで

1):ファイルを:// localhostの/ユーザ/ nelsond /ワークスペース/ BIM360UIArchitecture/BIM360UIPrototype/BIM360Issues-IOS/BIM360Issues-IOS-仕様-ARC/main.m:エラー:レキシカルまたはプリプロセッサの問題: 'Cedar-iOS/Cedar-iOS.h'ファイルが見つかりません 2)TestSpec.m:ファイル:// localhost/Users/nelsond/workspace/BIM360UIArchitecture/BIM360UIPrototype/BIM360Issues -IOS/BIM360Issues-IOS-Specs-ARC/TestSpec.m:エラー:レキシカルまたはプリプロセッサの問題: 'Cedar/SpecHelper.h'ファイルが見つかりません。

次は何をデバッグするのが面倒です。

+0

「シダー」とは何ですか? 「シダー」とタグ付けされた記事は40件しかありません。これらは主にクラウドプラットフォームのHerokuに関するものです。あなたの投稿はHerokuに関するものではありません。 –

+0

"CedarはBDDスタイルのObjective-Cテストフレームワークです。" source:https://github.com/pivotal/cedar –

答えて

0

ここでは、iOSアプリケーションでCedarを統合する際に発生したいくつかの点を示します。 〜/ライブラリ/開発/ Xcodeの/ DerivedData /シダー-borwneaogydgaodbtmfyaccykqxn /ビルドします/製品/デバッグ-iphoneuniversal /シダー-iOS.framework

  1. "シダー・iOSの静的なフレームワークは、" 次のフォルダを参照するようです。拡張子が.aのものではありません。

  2. スタティックフレームワークは既にARCなしでコンパイルされているため、問題なくARCを有効にできました。

  3. 私も(私は私のを見て、それを修正するために必要なコードの最初の部分は、テスト対象のための私のmain.mである私のInfo.plistファイル内の任意の「メインnibファイルベース名」キー
  4. を見ていませんメインアプリケーションのmain.m)
  5. コードの第2部分は、 "MyAppDelegateSpec.mm"

#import <UIKit/UIKit.h> 

int main(int argc, char *argv[]) { 
    @autoreleasepool { 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([CedarApplicationDelegate class])); 
    } 
} 

という名前のファイルに存在するスペックコードであります
2

)メインのアプリターゲットにARCを使用できます。

b)なぜあなたがこれを聞いているのかわからない、Cedar自体はARCで構築されていないと思われます。とにかく、ちょうどそれを混乱させる必要はない、デフォルトの設定を使用してください。

c)テストクラスにはARCを使用しないでください。

d)新しいプロジェクトを作成する場合は、デフォルトの自動生成OCUnitターゲットを使用できます。


私は数ヶ月間私のiOSアプリケーションでCedarを使用していましたが、本当に好きです。

私はOCUnitと一緒に使っているので、テストを実行するのにCmd+Uを打つだけで、CIサーバーから実行するための具体的なスキームがあります。

ファイルを編集することなくCedarのコードを取得するには、git submoduleを作成することをお勧めします。 CedarのXcodeプロジェクトをあなたのアプリのワークスペースにドラッグするだけです。静的ライブラリを使用することをお勧めします。説明したように、リンカフラグを追加します。また、Xcodeにヘッダファイル(User Header Search Paths"$(PROJECT_DIR)/Libraries/cedar/Source/Headers"のようなもの)を見つける場所を伝える必要があります。今すぐ行く準備ができているはずです。

私のテストクラスではARCを無効にしています(How can I disable ARC for a single file in a project?参照)。 ARCの設定は実際にはファイル固有のものなので、メインターゲット(ARC付き)のファイルをテストファイルに含めることができます。ときどき混乱するが、非常に強力なビット。

これは役に立ちます。

関連する問題