Ich schreibe einen Test für eine Klasse, die ein Bild lädt und einige Farbmanipulationen durchführt. Das Bild wird geladen mitLaden Sie ein Testbild für Unit-Test
UIImage* image = [UIImage imageNamed:imageName];
Wenn ich die App alles in Ordnung ist und die Bilder laufen wie erwartet geladen. Ich fügte einen Komponententest hinzu, der ein bestimmtes Testbild verwenden soll, das während des Tests geladen wird. Wenn ich das Testgerät starte, wird das Bild nicht geladen. Was ich bisher gelesen habe, ist, dass die Methode imageNamed immer aus dem Ressourcenordner des App-Bundles geladen wird. Wie kann ich dies zum Bündel meines Tests ändern?
das bedeutet aber, dass Sie den Seriencode für Testzwecke ändern, was nicht der Fall sein sollte, e speziell nicht für Rahmenteile, die gemacht werden, um Ihr Leben einfacher zu machen;). – trumi
@truni also ... du versuchst mich davon zu überzeugen, dass du '[UIImage imageNamed:]' für die Teile deines Frameworks verwendest, und so sollte es sein? Die Verwendung von '[UIImagne imageNamed:]' in diesem Kontext ist aus mehreren Gründen eine wirklich schlechte Idee. Wenn Sie ein faux-ios-Framework schreiben, verwenden Sie NSBundle und geben Sie das Ressourcenverzeichnis Ihres faux-ios-framework an oder suchen Sie es. dann benutze etwas anderes als '[UIImage imageNamed:]'. Erstellen Sie dann ein weiteres Bundle für Ihre Testvariante und führen Sie Ihre Tests über alle Bundles durch. – justin
und in diesem Kontext ändert es nicht den Code für Testzwecke, es würde Ihren Code ändern, weil Ihr Code das Falsche tat. Anstatt ein neues Bündel zu erstellen, können Sie diese Parameter an die Schnittstellen Ihres Frameworks (öffentlich oder privat) übergeben. – justin