2017-09-20 7 views
1

Objective-Cで書かれたCocoaPodsプロジェクトで単体テストを実行したいと思います。問題のプロジェクトは画像で動作するので、テスト目的でいくつかの画像をフィードする必要があります。いかなる場合でも、これらの画像はリリース版で使用されることはないため、主要ターゲットのためにアクセス可能である必要はありません。私は資産を作成することによって開始Objective-Cの単体テストのアセットカタログにアクセス

私のテスト対象とそれに関連&ファイル:

enter image description here

私の資産ファイル内に、私は私の最初のテスト画像のエントリ作成されました:

enter image description here

アセットファイルがテストオブジェクトプロジェクトのフェーズタブのバンドルリソースにコピーされていることを確認しました。

enter image description here

その後、私のユニットテストでは、私はそれを呼び出す:画像が設定されていないよう

- (void)testLoadImage { 
    UIImage *image = [UIImage imageNamed:@"colortestpattern"]; 
    XCTAssertNotNil(image); 
} 

テストが、失敗しました。

私はテスト用に大量の画像が必要なので、私はアセットファイルを使用したいと考えていました。しかし、これが不可能な場合は、私は代替案を用意しています。

答えて

2

UIImageのクラスメソッドimageNamed:inBundle:compatibleWithTraitCollection:を試しましたか?

UIImage *image = [UIImage imageNamed: @"colortestpattern" 
          inBundle: [NSBundle bundleForClass: [self class]] 
     compatibleWithTraitCollection: nil]; 

イメージは、メインバンドルではなく、ユニットテストバンドルにある必要があります。

+0

私は資産ファイルを200枚近く持っていると思っていましたが、答えのバリエーションを使って巻きました。ありがとう! – CodeBender

関連する問題