UITests: deinit wird nicht aufgerufen

8

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.

    
Bartłomiej Semańczyk 30.08.2015, 12:44
quelle

2 Antworten

0

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.

    
rikola 18.10.2016 01:20
quelle
0

Stellen Sie sicher, dass Deinit nicht leer ist. Wenn es leer ist, wird es nie funktionieren. Geben Sie alles ein, was Sie für die Zuweisung benötigen, und prüfen Sie, ob es funktioniert oder nicht.

Mein Vorschlag

%Vor%     
Prince 19.10.2016 04:45
quelle

Tags und Links