1

レガシ C++ ライブラリの依存関係を持つ iOS アプリのテストを作成しようとしています。従来のライブラリには、アプリ サイクルごとに 1 回実行/設定する必要がある初期化ルーチンと静的変数があります。

正しく動作するテスト ターゲットを作成しました。私のテスト ターゲットは、Bundle Loader を介してアプリをテスト ホストとして使用するように設定されています。これにより、iOS アプリが起動され、[SenTestCase invoke test] を使用してテストが実行されます。この設定を前提として、アプリでライブラリを初期化し、「ライブラリが既に初期化されている」状態でテストを実行できるようにしたいと考えています。これは、Apple Application Test パラダイムに適合しているようです。ただし、アプリの起動時に初期化される従来のライブラリの静的変数は、テストの実行時に NULL になります。変数をリセットするユーザー コードはありません。

アプリケーション テストがアプリの静的変数にアクセスできることを期待しています。これを許可するように構成できるものはありますか? 何か不足していますか?


明確にするために、問題のある静的変数は、リンクされた c++ ライブラリにあります。アプリと単体テストは、同じアプリケーション スコープを共有していないようです。

4

1 に答える 1

4

同様の問題がありましたが、Obj-C静的ライブラリがありました。シングルトンは2回作成されました(アプリで1回、テストバンドルで1回)。それらのポインタも静的メモリにあります。

問題は、ライブラリをテストバンドルターゲットにリンクしていたことでした。

「バイナリとライブラリのリンク」リストからライブラリを削除して修正しました。次に、静的ライブラリのビルド設定も変更する必要がありました。「デフォルトで非表示になっているシンボル」を「いいえ」に設定する必要がありました。

于 2013-02-02T06:51:09.393 に答える