Voglio scrivere un test unitario della sola parte della GUI della mia applicazione Cocoa.Come posso scrivere un test unitario di una GUI in Xcode?
Nel test dell'unità di testo, c'è una struttura di test e un caso di test che chiama l'unità in prova. Tutto il codice al di sotto di quell'unità viene preso in giro. Quindi, sia l'input che l'output sono controllati e monitorati; viene testato solo il codice nell'unità in prova.
Voglio fare la stessa cosa in cui l'unità sotto test è la mia GUI:
1) Configurare una sorta di framework in cui posso scrivere codice che manipolerà e ispezionerà i controlli della GUI.
2) Connetti i miei controlli della GUI ai gesti del mio codice attuale, non alle istanze reali.
3) Eseguire il test, che manipola i controlli e quindi controlla l'oggetto fittizio per vedere se sono stati chiamati i metodi corretti con i parametri corretti e controlla la GUI per vedere se le risposte dall'oggetto simulato causano le modifiche corrette nei widget .
Chiunque faccia questo? Se é cosi, come? Qualche idea su come potrei fare questo?
Grazie,
Pat
(Edit) Per fare un esempio molto specifico, voglio:
1) Scrivi un banco di prova che selezionerà la voce di menu 'MyMenu' -> 'MyItem '. In questo test case, voglio verificare che il metodo [AppDelegate doMyItem] venga chiamato esattamente una volta e che nessun altro metodo in AppDelegate venga chiamato.
2) Genera un oggetto fittizio di AppDelegate. (So come farlo)
3) In qualche modo (con il quale eseguire il handwaving qui) collegare la mia applicazione in modo che un'istanza di simulazione di AppDelegate sia collegata al posto di quella reale.
4) Eseguire il test. Guardalo fallire perché 1) Non ho ancora creato MyMenu. 2) Non ho ancora creato MyItem. 3) Non ho fatto il lavoro di IB per connettere MyItem a [AppDelegate doMyItem], o 4) perché non ho ancora scritto il metodo 'doMyItem'.
5) Correggere i quattro problemi precedenti (uno alla volta se mi sento davvero pedante quel giorno).
6) Esegui nuovamente il test e guardalo avere successo.
Ciò rende chiara la domanda?
Hi Patros, Per il secondo # 1, non ho ben vedere che cosa significa 'generare input dell'utente-like'. Puoi darmi un esempio? Grazie, Pat –
Significa solo generare gli eventi di tastiera e mouse che si desidera vedere. È possibile eseguire questa operazione avvolgendo le classi di interfaccia utente native e dirottandone gli eventi, eventualmente accedendo all'API o scrivendo driver personalizzati. – patros