2017-09-20 4 views
1

Ich habe ein CocoaPods-Projekt in Objective-C geschrieben, für das ich Komponententests ausführen möchte. Das fragliche Projekt arbeitet mit Bildern, daher muss ich einige Bilder zu Testzwecken einspeisen. Auf keinen Fall werden diese Bilder in einer Release-Version verwendet - sie müssen also nicht für das Hauptziel zugänglich sein.Zugriff auf einen Asset-Katalog für Komponententests in Objective-C

ich durch die Schaffung eines Vermögens begonnen & es mit meinem Testziel zugehörige Datei:

enter image description here

In meinem Vermögen Datei, ich habe einen Eintrag für mein erstes Testbild erstellt:

enter image description here

Ich habe auch verifiziert, dass die Assets-Datei in die Bundle-Ressourcen unter der Registerkarte Projekt-Phasen des Testobjekts kopiert wird:

enter image description here

Dann in meinem Unit-Test Ich nenne es:

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

Der Test schlägt fehl, da das Bild nicht gesetzt ist.

Da ich eine große Sammlung von Bildern zum Testen benötige, hoffte ich, die Asset-Datei zu verwenden. Wenn dies jedoch nicht möglich ist, bin ich offen für Alternativen.

Antwort

2

Haben Sie versucht UIImage 's Klassenmethode imageNamed:inBundle:compatibleWithTraitCollection:?

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

Das Bild sollte in der Einheit Test-Bundle, nicht das Hauptbündel sein.

+0

Ich hoffte, ich könnte die Assets Datei verwenden, da ich fast 200 Fotos habe, aber ich endete mit einer Variation Ihrer Antwort. Vielen Dank! – CodeBender

Verwandte Themen