Piszę kilka testów jednostkowych, a ze względu na charakter tej konkretnej aplikacji ważne jest, aby uzyskać jak najwyższy poziom UI
łańcucha. Tak więc, co chciałbym zrobić, to programowo uruchomić naciśnięcie przycisku, tak jakby użytkownik nacisnął przycisk w GUI
.
(Tak, tak - mógłbym po prostu zadzwonić do IBAction
selektora, ale znowu natura tej konkretnej aplikacji sprawia, że ważne jest, aby sfałszować faktyczne naciśnięcie przycisku, tak aby IBAction
wywołać go z samego przycisku.)
Jaka jest preferowana metoda tego?
ios
iphone
uibutton
touch-event
Olie
źródło
źródło
Odpowiedzi:
Okazało się, że
w tym przypadku dostałem dokładnie to, czego potrzebowałem.
EDYCJA: Nie zapomnij zrobić tego w głównym wątku, aby uzyskać wyniki podobne do naciśnięcia przez użytkownika.
W przypadku Swift 3:
buttonObj.sendActions(for: .touchUpInside)
źródło
[myController myActionMethod:myButton1];
myActionMethod:
brak publicznego, więc nie można zadzwonić bezpośrednio.Aktualizacja tej odpowiedzi dla Swift
EDYCJA : Zaktualizowano dla Swift 3
źródło
Jeśli chcesz przeprowadzić tego rodzaju testy, spodoba ci się obsługa automatyzacji interfejsu w iOS 4. Możesz napisać JavaScript, aby symulować naciskanie przycisków itp. Dość łatwo, chociaż dokumentacja (szczególnie część wprowadzająca) jest nieco rzadki.
źródło
Swift 3:
źródło
W tym przypadku
UIButton
pochodzi odUIControl
. Działa to dla obiektu pochodzącego zUIControl
.Chciałem ponownie użyć
UIBarButtonItem
akcji „ ” w konkretnym przypadku użycia. TutajUIBarButtonItem
nie oferuje metodysendActionsForControlEvents:
Ale na szczęście
UIBarButtonItem
ma właściwości do celu i działania.Tutaj
rightBarButtonItem
jest typuUIBarButtonItem
.źródło
Dla systemu Xamarin iOS
Odniesienie
źródło
Swift 4:
self .yourButton (self)
źródło