Ich erstelle eine Xamarin.Forms App und möchte mit UITest das korrekte Verhalten meiner Ansicht testen. Die Ansicht reagiert nicht nur auf Benutzereingaben wie Knopfdruck oder Ähnliches. Stattdessen gibt es Hintergrundoperationen, die zu Änderungen in der Ansicht führen sollten, wie das Ausblenden eines Elements und das Anzeigen eines anderen Elements an dieser Stelle. Ein anderes Beispiel ist das Füllen eines ListView mit Elementen, die durch eine Hintergrundoperation erzeugt würden. Diese Änderungen würden am ViewModel vorgenommen, dessen Eigenschaften an View gebunden sind. Jetzt möchte ich die Hintergrundoperation simulieren und testen, dass sich meine Ansicht korrekt verhält. Aber ich kann mein ViewModel nicht im UITest-Projekt bearbeiten, weil ich in der Test-Klasse nicht auf Xamarin.Forms verweisen kann. Es scheint, als ob es nicht beabsichtigt ist, die Anwendung auf diese Weise zu testen. Die gesamte App ist eine Blackbox für das UITest und Sie können nur mit Maus und Tastatur interagieren. Wie kann ich auf Interna meiner App zugreifen, das entsprechende ViewModel zum Beispiel. Ich habe schon nach diesem Problem gesucht, aber nichts gefunden. Vielleicht suche ich in die falsche Richtung. Jede Hilfe würde sehr geschätzt werden.Wie fälsche ich Hintergrundaktivität während der Verwendung von Xamarin.UITest
0
A
Antwort
0
Sie können über eine Hintertür auf eine Methode in einem Plattformprojekt zugreifen, und von dort aus sollten Sie auf Formularcode zugreifen können, da Ihr App-Projekt auf das Kernprojekt von Forms verweist. Siehe: https://developer.xamarin.com/guides/testcloud/uitest/working-with/backdoors/
erstellen Backdoor-Methode in Android-Projekt:
In MainActivity:
[Export("MyBackdoorMethod")]
// Can optionally take a parameter of string, int, or bool.
// Can optionally return string or Java.Lang.String.
public void MyBackdoorMethod()
{
// In through the backdoor - do some work.
}
Um die Android-Backdoor-Methode von einem Test zu nennen:
app.Invoke("MyBackdoorMethod");
Backdoor-Methode erstellen in iOS Projekt:
In AppDelegate:
[Export("myBackdoorMethod:")] // notice the colon at the end of the method name
// Must take an NSString and return an NSString.
public NSString MyBackdoorMethod(NSString value)
{
// In through the backdoor - do some work.
}
Um die iOS-Backdoor-Methode von einem Test nennen:
app.Invoke("myBackdoorMethod:", "the value");
Weitere Details auf den Link, aber das sollte man in Gang bringen ausreichen.
Verwandte Themen
- 1. Wie fälsche ich Active Directory?
- 2. Wie fälsche ich einen Validierungsfehler?
- 3. Wie kann ich einen Xamarin.UITest von der Kommandozeile ausführen?
- 4. Xamarin.UITest: Abrufen von Koordinaten der Geräteanzeige
- 5. Wie installiere ich CPAN-Module während der Verwendung von Perlbrew?
- 6. Wie bekomme ich den Indexwert während der Verwendung von ko.utils.arrayForEach
- 7. iOS: Wie Hintergrundaktivität in Laufwerk-Tracking-App
- 8. Wie fälsche ich Änderungen am Netzwerkverbindungstyp im iOS-Simulator?
- 9. Xamarin.UITest Hintertür mit Startbildschirm
- 10. Wie fälsche ich eine iOS-Geräte-Rotation in Flash
- 11. Wie funktioniert der Semi Colon während der Verwendung von out.write?
- 12. Speicherlecks während der Verwendung von gstbuffer
- 13. Unterschiedlicher Textstil während der Verwendung von listSeparatorTextStyleView
- 14. Wie fälsche ich Macports mit meinem Build-Skript für ffmpeg?
- 15. Speicherlecks während der Verwendung von Doppel-Array
- 16. Verbindungsfehler während der Verwendung von Cqlsh
- 17. Daten während der Verwendung von MySQL abrufen
- 18. Framework Blackboxing während der Verwendung von Webpack?
- 19. Fragmentierungsansicht während der Verwendung von FragmentStatePagerAdapter aktualisieren
- 20. autoActivityTracking während der Verwendung von google-services.json
- 21. Logisches Problem während der Verwendung von Beschleunigungsmesser
- 22. OpenCV: Speicherverlust während der Verwendung von QPixmap
- 23. Cancancan Edelstein während der Verwendung von Rspec
- 24. ClassNotFound während der Verwendung von myBatis config
- 25. Zugriffssteuerelemente während der Verwendung von MasterPage
- 26. Löschen Cache während der Verwendung von Glide
- 27. AttributeError während der Verwendung von Scikit-Tool
- 28. Schatten während der Verwendung von mindmup-editabletable.js
- 29. Doppel während der Verwendung von Schleifen Ergebnis
- 30. Verhindern CSRF während der Verwendung von CORS?
OK danke. Dies ist ein bisschen umständlich, aber scheint der Weg zu gehen. Und ist es umgekehrt? Wenn meine UI-Steuerung einen ICommand initiiert, der nicht erneut auf der Benutzeroberfläche angezeigt wird. Ich denke, ich kann nicht Test in der Backdoor-Methode behauptet, kann ich? –
Nein, Sie können nicht die Berechtigungen im Plattformcode haben, aber Sie können etwas von der Backdoor-Methode zurückgeben, gegen die Sie testen können. – jgoldberger