Android/Espresso Test: diferència entre les revisions

Contingut suprimit Contingut afegit
Línia 43:
Un cop tenim ja definits els prerequisitis, ens podem centrar en construir cada part del test. Quan nosaltres volem provar una aplicació amb Espresso, necessitem crear una classe nova dintre del nostre projecte on encapsularem totes les accions de prova que executarem després. Pot rebre el nom que vulguem, però necessitem que estigui a la ruta "C:\\Nom_del_projecte\app\src\androidTest\java\domini_del_projecte\NomTest.java", sinó ens generarà problemes de compilació.
 
[[File:Path_androidtest.png|cap|Path_androidtest]]
[IMATGE Path]
 
Dintre d'aquesta nova classe, és on implementarem cadascuna de les proves que farem servir sobre l'aplicació a testejar. Aquesta nova classe, haurà de tenir una estructura similar a la següent:
-* Declaració de les diferents llibreries que necessitarem
 
[[File:Llibreries.png|cap|Llibreries del projecte]]
- Capçalera de la classe, necessitem que la capçalera incorpori aquests dues entrades per a que funcioni amb paral·lel amb la nostre funció
 
* Capçalera de la classe, com qualsevol classe Java
- Funcions @Rules, @Before i @Test i variables local si s'escau
 
 
• @Rules: aquesta etiqueta l’utilitzarem per dir-li al test sobre quina classe volem aplicar les proves que escriurem més endavant.
 
• @Before: aquesta etiqueta la farem servir per inicialitzar tot el que necessitem abans de que l'aplicació comenci a testejar.
-* Funcions @Rules, @Before i @Test i variables local si s'escau
• @Test: tota funció que tingui aquesta etiqueta serà una prova que executarà l'aplicació de testeig.
 
* @Rules: aquesta etiqueta l’utilitzarem per dir-li al test sobre quina classe volem aplicar les proves que escriurem més endavant.
* @Before: aquesta etiqueta la farem servir per inicialitzar tot el que necessitem abans de que l'aplicació comenci a testejar.
* @Test: tota funció que tingui aquesta etiqueta serà una prova que executarà l'aplicació de testeig.
 
Dintre de les funcions amb l'etiqueta @Test, haurem de definir les accions que executarà l'aplicació utilitzant uns mètodes en concret que Espresso ens ofereix de base. Utilitzant-les, podrem tant generar accions com si fóssim el usuari i comprovar el resultat.
 
Per poder simular la interacció humana, tenim que seguir una estructura, la qual consta de 3 parts principals:
-* Identificar la View sobre la que aplicarem les proves
-* Generar l’acció pertinent sobre la View
-* Recuperar el resultat obtingut
 
Per identificar una View, utilitzarem el mètode onView(), que és qui retornarà la View en qüestió, en conjunt amb el mètodes withId() que és el encarregat de definir quin paràmetre li estem passant al mètode. withId() requereix d’un paràmetre que és el identificador de la View que estem consultant. Per veure un exemple:
Linha 69 ⟶ 73:
En la llista següent, podem trobar els diferents mètodes per executar cadascuna
de les accions que el usuari podrà fer dintre de la nostre aplicació. Val a dir que totes estan orientades a una View:
* ViewActions.click(): simula un click sobre la view
* ViewActions.typeText(String): simula un click en la view i hi escriu el text especificat per el string que li passem per paràmetre.
* ViewActions.scrollTo(): simula com l’usuari mou la visibilitat de la View, de tal manera que es pugui veure la View que estem buscant.
* ViewActions.pressKey(KeyCode): simula un click en la tecla que li passem per paràmetre en forma de keycode.
* ViewActions.clearText(): en la view seleccionada se li neteja el text que contingui.
 
Com a exemple, podem observar aquesta acció que fa click sobre la View en qüestió:
Linha 82 ⟶ 86:
 
Com a últim pas, necessitem un mètode per garantir que realment s’ha executat tal i com esperàvem. La manera és utilitzant el mètode ViewInteraction.check(). Aquest mètode serveix per comprovar que el estat esperant concorda amb els resultats esperats. A més a més, requereix d’un paràmetre per dir-li al mètode que és el que ha de comprovar. Els paràmetres disponibles són els següents:
* doesNotExist:
* matches:
* selectedDescendentsMatch:
 
Per posar un exemple complet, podríem identificar un EditText, cambiar-li el text i comprovar el resultat d’aquesta manera: