Warum, wenn ich meine Controller in Xcode teste, ist alles in Ordnung, aber deinit
Methoden werden nicht aufgerufen. Ist es richtig?
Während die App normal funktioniert, ist das in Ordnung, aber nicht für UITest
target.
Bei komplizierten Strukturen wird der Simulator mehr und mehr Objekte zuweisen, und ... wird die Zuweisung nicht aufgehoben. So wird die App manchmal auf langsameren Rechnern manchmal ohne Grund beendet ... und Tests können nicht ausgeführt werden.
Verwenden von Xcode 8, iOS 10, macOS Sierra.
Ich kann Ihre Frage nicht definitiv beantworten, ohne eine Probe des Testcodes zu sehen. Ihr Fall macht mir jedoch einige Dinge suspekt.
Grundsätzlich passiert es, dass die App für jeden ausgeführten Test neue Prozesse erstellt. Ein Speicherleck irgendwo innerhalb des Codes wäre das erste zu untersuchende Problem. Wenn Sie Speicher verlieren, kann das Testframework einen Haufen Prozesse auslösen, die den Absturz verursachen und es ermöglichen, dass dieses Problem während des normalen Betriebs unter dem Radar verschwindet.
Außer wenn Sie die Controller explizit durch die Abreißfunktion in Ihrer Testklasse deinitialisieren, wird der Prozess im Allgemeinen nur am Ende des Tests beendet. Wenn Sie Ihre Reinitialisierung testen möchten, würde ich vorschlagen, dass Sie explizit einen Abbruch in den Tests auslösen, um Ihr Speicherzuordnungsverhalten zu testen. Auch die Xcode-Analyse-Funktion könnte Ihnen hier nützlich sein.
Wenn Sie eine Probe Ihres Testcodes posten könnten, wäre das eine große Hilfe und ich werde meine Antwort entsprechend bearbeiten.
Tags und Links ios xcode swift xcode-ui-testing