2

私は、AppleがiPhoneでの単体テストアプリケーションについて公開している指示に従いました。アクティブなSDKを「iPhoneSimulator」に設定すると、問題なく動作します。アプリケーション自体のビルドの一部として、常にテストをビルドして実行するように構成しました。

Appleは(省略して)これは常に機能するはずだと示唆していますが、アクティブなSDKを「iPhoneデバイス」に設定するとテストはスキップされます。OCMockともリンクしていますが、テストが失敗する代わりに、この警告がビルドログに記録されます。

ld: warning: in .../build/Debug-iphoneos/OCMock.framework/OCMock, missing required architecture arm in file

単体テストバンドルをメインアプリケーションの依存関係にするのは非常に便利なので、これらのテストはすべてのビルドで実行されますが、デバイスのビルド中に機能しない場合、その有用性は大幅に低下します。これは既知ですが、文書化されていない制限ですか?

4

1 に答える 1

0

クリストファーがコメントしたように、これはまさに XCode の振る舞いです。SDK が Simulator に設定されている場合、Unit Test ターゲットの最後にある Run Script ステップは、ビルドされたターゲットを実際に実行しますが、ビルド出力を見ると、Device SDK に対してビルドするときに単にボークします。

基本的に、LogicTests を Simulator SDK に対してビルドし、ApplicationTests を Device SDK に対してビルドします。それは苦痛ですが、それはまさにそれが機能する方法です。

また、OCMock を ARM で動作させたい場合 (実際のデバイスで実行されるアプリケーション テストで必要になる可能性が高い)、OCMock lib ターゲットはデフォルトで "fat"/Universal であると思います。つまり、同じライブラリ内に i386 コードと arm コードの両方が含まれます。リポジトリをチェックアウトして自分でビルドすると、最良の結果が得られます。

于 2010-09-25T16:35:32.703 に答える