1

iOSアプリケーションの開発中に、ようやくコードのテストを開始しました。ただし、特にテスト対象のクラスへの偽のオブジェクトの注入に関して、他の人がテスト可能なコードをどのように作成しているかについてもっと知りたいと思います。これまでのところ、これは私がそれを行う方法です:

// 1)偽物を使用したCUTの初期化(コンストラクター注入)A * a = [[A alloc] initWithB:C:D:.....];

// 2)依存関係をプロパティとして公開します(プロパティインジェクション)aB = myB;

私は1)を好みます。なぜなら、本当に必要な場合を除いて、内部データをプロパティとして公開するのは好きではないからです。

私の質問は次のとおりです。objective-cおよびiOSテストフレームワークを処理するときにプロパティインジェクションを実行するための代替/より良い/より効率的な方法はありますか?

4

1 に答える 1

0

しばらく経ちましたが、質問してからさまざまなソリューションを扱う機会がありました。私は今、ほとんどの場合、組み合わせを好みます。クラスAがクラスBに依存している場合、次のようにBのインスタンスでaを初期化します。

A* myA = [[A alloc] initWithB:myB];

これに加えて、実行時に切り替えることができるように、Bをプロパティとして公開します。場合によっては、インターフェースパターンが望ましいこともあります。

- (id)initWithBy:(id<bProtocol>)aB;

これは明らかにすべての状況に適しているわけではありませんが、依存関係をクラスに注入して、クラスをよりテストしやすくするための良い方法であることがわかりました。

于 2012-10-29T20:31:58.050 に答える