2016-03-29 18 views
0

Mit dem Rekorder mit codierten UI testen wir unsere UI für die kontinuierliche Integration, aber wir haben einen Haken in einer der Aktionen, die wir testen möchten ist eine Löschaktion.Codierte UI-Testobjekt existiert nicht nach dem Löschen von Sammlung

Wir überprüfen das Listenelement, das wir löschen werden, wir drücken dann delete, der Löschbefehl entfernt es aus der Sammlung, die ebenfalls gebunden wird, wir behaupten, dass das Listenelement nicht mehr existiert, aber es sagt immer noch

wir dachten, es könnte von ein paar Sekunden gedauert voll des Objekts, um loszuwerden, so dass wir einen 20 Sekunden warten, bevor behauptet setzen aber immer noch sagt, es existiert

die Automatisierung ids für die Listitems wirklich einzigartig sind, sind sie besteht aus einer Zeichenkette + der ID der Nummer in der Liste + dem Wert des Textblocks im Listenelement, so dass es definitiv nicht mit einem anderen Element verwechselt wird

Irgendwelche Gedanken zu diesem würde sehr geschätzt werden?

+0

Nun Schritt eins ist, die Anwendung zu starten und zu sehen, ob die Schaltfläche Löschen Objekte (visuell oder whatnot) entfernt. Wenn Ihre Automatisierung prüft, ob das Objekt noch im Speicher vorhanden ist, verweist es entweder auf etwas anderes, oder der Garbage Collector hat es noch nicht erreicht. Ersteres ist ein potenziell größeres Problem. –

+0

Was macht der Test zwischen dem Löschen? und behaupten? Wird die UI-Karte aktualisiert? Könnte die Behauptung alte Daten finden? – AdrianHHH

+0

@GordonAllocman Die Schaltfläche "Löschen" funktioniert wie erwartet, löscht das Objekt aus der beobachtbaren Sammlung und die Ansicht wird erwartungsgemäß durch die Bindung an die beobachtbare Sammlung aktualisiert. Wie für vielleicht im Gedächtnis zu bleiben - das war unser erster Gedanke daher die 20 Sekunden Verzögerung –

Antwort

2

Die UI-Karte in der codierten Benutzeroberfläche enthält einen Cache mit den zuvor angezeigten Dingen. Oft funktioniert das gut, weil es die Suche reduziert, die benötigt wird, um Dinge zu finden. Manchmal behält der Cache Dinge bei, die gelöscht wurden. Dies scheint bei dieser Frage der Fall zu sein.

Das Aktualisieren der UI-Zuordnung löscht den Cache und erzwingt nachfolgende UI-Map-Zugriffe, um eine weitere Suche durchzuführen. Auf diese Weise wird der Cache neu gefüllt.

Es ist nicht erforderlich, den gesamten Cache zu löschen. Oft muss nur ein Teil der Daten aktualisiert werden, und dies kann durch Aufruf der ...Find() Methode auf dem entsprechenden UI Control erfolgen.

Ein ähnliches Problem wird behandelt here in Stack Overflow und es zeigt auch eine Möglichkeit zu verstehen, welcher Teil der UI-Karte aktualisiert werden muss.

Verwandte Themen