рд╣рдо рдкреЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ

рдЫрд╡рд┐

рдкреЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреИрдЯрд░реНрди рд╡реЗрдм рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдФрд░ рд╡рд╣рд╛рдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╕рд╛рдмрд┐рдд рд╣реБрдЖред рдЬрдм рдореИрдВрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рддреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ред рдореИрдВрдиреЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреА рддрд▓рд╛рд╢ рдХреА, рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рд╕реЗ рдкреВрдЫрд╛ рдФрд░, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХреЛрд╢рд┐рд╢ рди рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВ рдорд┐рд▓реЗред рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЖрдпрд╛ред

рдХреНрд▓рд╛рд╕рд┐рдХ рдкреЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЕрд░реНрде рд╣реИ рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рджреЛ рд╕реНрддрд░: рдкреГрд╖реНрда рддрддреНрд╡ рдФрд░ рдкрд░реАрдХреНрд╖рдгред рдореИрдВ рдПрдХ рдФрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ - рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХред рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рдврд╛рдВрдЪреЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЙрдирдХреЗ рд╕рдорд░реНрдерди рдХреЛ рднреА рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкрд░реАрдХреНрд╖рдХ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓рд╛ рд╣реИред рдпрд╛рдиреА рдореИрдВ рдЕрдВрдд рд╕реЗ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ:

  1. рдореИрдВ рдПрдХ рд╕реБрдВрджрд░ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рдХреЗрд╕ рдХреЛрдб рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ,
  2. рдореИрдВ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдкрд░рдд рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рд╕реЗ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реВрдВ,
  3. рдореИрдВ рдЙрди рддрддреНрд╡реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред

рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдХреБрдЫ рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ - рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдврд╛рдВрдЪрд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдПрдорд╡реАрдкреА рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ: рдЙрдиреНрд╣реЛрдВрдиреЗ рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдмрдирд╛рдпрд╛, рдФрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдн рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рдкрдиреНрдиреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реБрдП рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдЬрд╛рд░реЛрдВ рд▓рд╛рдЗрдиреЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рддреАрди рдорд╣реАрдиреЗ рдмрд╛рдж рдЖрдк рдкрд╣рд▓реЗ рдХреНрд▓рд┐рдХ рдХреЗ рд▓рд┐рдП рдЫреЗрдж рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ рдФрд░ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рд╕рдм рдХреБрдЫ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд░рдирд╛ рдерд╛, рддреЛ рдЖрдкрдХреА рдЕрдзрд┐рдХрд╛рдВрд╢ рд░рдЪрдирд╛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдЦрд╝рддреНрдо рд╣реЛ рдЬрд╛рдПрдЧреА " рдзреВрд▓ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ "рдЧрд┐рдЯ рдХреЗ рдмреЗрд╕рдореЗрдВрдЯ рдореЗрдВ ... рдПрдХ рд╕рдЪреНрдЪрд╛ рдкрд░реАрдХреНрд╖рдХ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рдПрдХ рдмрдЧ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрддрдирд╛ рд╣реА рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рд╕рд╕реНрддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдореЗрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - рдХреБрдЫ рдШрдВрдЯреЛрдВ рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрд╛, рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХреА, рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ - рдЗрд╕реЗ рдмрд╛рд╣рд░ рдлреЗрдВрдХ рджрд┐рдпрд╛, рдПрдХ рд╕рдмрдХ рд╕реАрдЦрд╛, рдкрд░ рдЪрд▓рд╛ рдЧрдпрд╛ред

рддреЛ рдЗрдирдкреБрдЯ рд╣реИ:

  • рд╕реНрдЯреЙрдХ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкрд░ рдЯреНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди;
  • рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕реНрдЯреИрдХ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП;
  • рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ UI рдСрдЯреЛрдореЗрдЯрд░;
  • рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ рд▓реЙрдЧрд┐рди рдЯреЗрд╕реНрдЯ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рддреИрдпрд╛рд░реА


рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ, рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯрд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ src/androidTest/java рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрд▓реЗрдХреНрдЯрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рдЧрд▓рдд рд╣реИ, рддреЛ рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝реЗрдВред рд╣рдореЗрдВ рдПрдХ рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг, рдПрдВрдбреНрд░реЙрдЗрдб рдПрд╕рдбреАрдХреЗ, рдПрдореБрд▓реЗрдЯрд░, рдЯреВрд▓реНрд╕, рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо-рдЯреВрд▓реНрд╕ рдФрд░ рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдм рдПрд╕рдбреАрдХреЗ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



рдЯреЗрд╕реНрдЯ рд▓реЗрдпрд░


рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рдерд╛, рд╣рдо рдЖрд╡реЗрджрди рдореЗрдВ рд▓реЙрдЧрд┐рди рдкрд░реАрдХреНрд╖рд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВрдЧреЗред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдХреЛрдб рдПрдХ рдирд┐рдпрдорд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдорд▓реЗ рдХреА рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

рдкреВрд░реНрд╡рд╕рд░реНрдЧ: рдЖрд╡реЗрджрди рдЪрд▓рд╛рдПрдБред
рдЪрд░рдг 1: myLogin / myPassword рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧрд┐рди рдХрд░реЗрдВред
рдЪрд░рдг 2: рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдирд╛рдо рдЬрд╛рдВрдЪреЗрдВред
рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо: рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╡рд╛рди рдЗрд╡рд╛рдиреЛрд╡ рд╣реИред

рдЫреЛрдЯрд╛ рдЕрд╕реНрд╡реАрдХрд░рдг: рдбрд┐рдЬрд╛рдЗрди рдкрд░реАрдХреНрд╖рдг рдХреА рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкреВрд░реНрд╡ рд╢рд░реНрдд рдореЗрдВ рдЖрдкрдХреЛ рдПрдХ рдЦрд╛рддрд╛ рдмрдирд╛рдиреЗ / рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреА рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдХреНрд╖рдг рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред

рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

 @RunWith(AndroidJUnit4.class) public class LoginTests { private TestApplication myApp; @Before public void setUp() { myApp = new TestApplication(); } @Test public void testLogin() { myApp.login("myLogin","myPassword"); String currentUser = myApp.getCurrentUserName(); assertEquals("Wrong name", " ", currentUser); } @After public void tearDown() { myApp.close(); } } 

рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ


рдкрд░реАрдХреНрд╖рдг TestApplication() рд╡рд░реНрдЧ рдФрд░ рдЙрд╕рдХреЗ рджреЛ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: login() рдФрд░ getCurrentUserName() ред рд╕рд╛рде рд╣реА, рдЖрдкрдХреЛ рдПрдХ рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ (рдЗрд╕рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдирд╛) рдФрд░ close() рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд╛рдордиреЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ:

 public class TestApplication { private UiDevice device; private PageObject page; public TestApplication() { } public void login(String login, String password) { } public String getCurrentUserName() { return "" } public void close() { } } 

рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рджреЛ рдЪрд░ рд╣реЛрдВрдЧреЗ:

  • device , рд╡рд░реНрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд android.support.test.uiautomator.UiDevice - рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рдЕрдкрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╣реИрдВ;
  • page , PageObject рд╡рд░реНрдЧ, рдЬрд┐рд╕реЗ рд╣рдо рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдмрдирд╛рдПрдВрдЧреЗред

рдЖрдЗрдП рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВред рдЗрд╕рдореЗрдВ, рд╣рдорд╛рд░реЗ рдЪрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдВ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдПрдВ:

 public TestApplication() { // Connect to device device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); device.pressHome(); // Get launch intent String packageName = InstrumentationRegistry.getTargetContext() .getPackageName(); Context context = InstrumentationRegistry.getContext(); Intent intent = context.getPackageManager() .getLaunchIntentForPackage(packageName) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); // Stat application context.startActivity(intent); // Get page objects page = new PageObject(device, packageName); } 

рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рдиреЗ рдкрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА
рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдЖрд╡реЗрджрди рдХреЗ рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд▓реЙрдиреНрдЪрд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдПрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ (рдпрджрд┐ рдЖрдк рдПрдореБрд▓реЗрдЯрд░ "рдПрдХ рдардВрдб рдкрд░" рдЪрд▓рд╛рддреЗ рд╣реИрдВ) рдФрд░ рд╕реНрд╡рдпрдВ рдЖрд╡реЗрджрдиред рдпрд╣ рднреА рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╕рд▓рд╛рд╣ рджреА рд╣реИред

рдиреЛрдЯ: android.content.Context.getTargetContext() рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдирд╛ рдХреЗрд╡рд▓ рддрднреА рдЙрдкрдпреБрдХреНрдд рд╣реИ рдЬрдм рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдорд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реЛрдВред рдпрджрд┐ рдЕрд▓рдЧ рд╕реЗ, рдпрд╣ рдореЗрдиреВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред

рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрд░рдг рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд┐рд╕реА рднреА рд╕рд╛рд░реНрдердХ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП) рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрд▓реНрдЯреНрд░рд╛рд╕рд╛рдЙрдВрдб рдХреЗ рддрд╣рдд рд▓реЙрдЧрд┐рдВрдЧ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рдгрд╛рдо рд╣реИред рдЪрд░рдг: "рд▓реЙрдЧрд┐рди" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, "рд▓реЙрдЧрд┐рди" рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ, "рдкрд╛рд╕рд╡рд░реНрдб" рдлрд╝реАрд▓реНрдб рдореЗрдВ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░реЗрдВ, "рд╕рд╛рдЗрди рдЗрди" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░рд╛ рддрд░реАрдХрд╛ рдЪрд░рдгреЛрдВ рд╕реЗ рднрд░ рдЧрдпрд╛ рд╣реИ:

 public void login(String login, String password) { page.login().click(); page.loginEntry().setText(login); page.passwordEntry().setText(password); page.signIn().click(); } 

рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рдмрд╕ рдлрд╝реАрд▓реНрдб рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

 public String getCurrentUserName() { return page.currentUserName().getText(); } } 

рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рд╣реЛрдо рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:

 public void close() { device.pressHome(); } 

рдкреГрд╖реНрда рддрддреНрд╡реЛрдВ рдХрд╛ рд╡рд░реНрдгрди


рдЗрд╕ рдкрд░рдд рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рддрддреНрд╡реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рд╣рдорд╛рд░реЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдпрд╣ рд╡рд░реНрдЧ android.support.test.uiautomator.UiObject2 )ред рдпрд╣реА рд╣реИ, рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдпрджрд┐ рд╡рд╣ рд▓реМрдЯ рдЖрдпрд╛, рддреЛ рдЖрдк рддреБрд░рдВрдд рдЙрд╕рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рднрд░реЗрдВ рдпрд╛ рдкрд╛рда рдкрдврд╝реЗрдВред рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рдгрд╛рдо рд╣реИ - рдЗрд╕ рдкрд░рдд рдореЗрдВ рд╣рдо рдЙрдореНрдореАрджреЛрдВ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░реЗрдВрдЧреЗ:

 private UiObject2 getUiObject(BySelector selector) { return device.wait(Until.findObject(selector), 10000); } 

рдКрдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ PageObject рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЙрдЧрд┐рди рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг:

 public UiObject2 loginEntry() { return getUiObject(loginEntrySelector()); } 

рдпрд╣ рдЪрдпрдирдХрд░реНрддрд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рдХреНрд╖реЗрддреНрд░ рдкрд╛рдПрдВрдЧреЗред android.support.test.uiautomator.BySelector рдЙрджрд╛рд╣рд░рдг рдХрдХреНрд╖рд╛ android.support.test.uiautomator.By рдХреЗ рд╕реНрдерд┐рд░ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдмрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рдерд╛ рдХрд┐ рд╣рд░ рдЬрдЧрд╣, рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рдЕрдиреВрдареЗ рд╕рдВрд╕рд╛рдзрди-рдЖрдИрдбреА рд╣реЛрдВрдЧреЗ:

 private BySelector loginEntrySelector() { return By.res(packageName, "login"); } 

рдЙрдкрдХрд░рдг рдкреИрдХреЗрдЬ (рддреИрдпрд╛рд░реА рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд) рдореЗрдВ рд╢рд╛рдорд┐рд▓ uiautomatorviewer рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ:



рд╡рд╛рдВрдЫрд┐рдд рддрддреНрд╡ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдиреЛрдб рд╡рд┐рд╡рд░рдг рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╣рдо рд╕рдВрд╕рд╛рдзрди-рдЖрдИрдбреА рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрддрд╛ рд╣реИред рд╣рдореЗрдВ TestApplication рдХреНрд▓рд╛рд╕ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо рдорд┐рд▓рд╛, рдФрд░ PageObject рдмрдирд╛рддреЗ рд╕рдордп рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред

рдкреВрд░реНрдг рдХреЛрдб:

рдХреНрд▓рд╛рд╕ рдкреЗрдЬрдСрдмреНрдЬреЗрдХреНрдЯ
 public class PageObject { private UiDevice device; private final String packageName; private BySelector loginButtonSelector() { return By.res(packageName, "user_view"); } private BySelector loginEntrySelector() { return By.res(packageName, "login"); } private BySelector passwordEntrySelector() { return By.res(packageName, "password"); } private BySelector signInSelector() { return By.res(packageName, "btnLogin"); } private BySelector userNameSelector() { return By.res(packageName, "user_name"); } public PageObject(UiDevice device, String packageName) { this.device = device; this.packageName = packageName; } public UiObject2 login() { return getUiObject(loginButtonSelector()); } public UiObject2 loginEntry() { return getUiObject(loginEntrySelector()); } public UiObject2 passwordEntry() { return getUiObject(passwordEntrySelector()); } public UiObject2 signIn() { return getUiObject(signInSelector()); } public UiObject2 currentUserName() { return getUiObject(userNameSelector()); } private UiObject2 getUiObject(BySelector selector) { return device.wait(Until.findObject(selector), 10000); } } 


рдкрд░реАрдХреНрд╖рдг рдЪрд▓ рд░рд╣рд╛ рд╣реИ


рдмрд╕, рдпрд╣реА рджреМрдбрд╝рдирд╛ рдмрд╛рдХреА рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдпрд╛ рдПрдореБрд▓реЗрдЯрд░ рд╢реБрд░реВ рдХрд░реЗрдВред adb devices рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ (adb рдпреВрдЯрд┐рд▓рд┐рдЯреА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо-рдЯреВрд▓реНрд╕ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ):

 List of devices attached emulator-5554 device 

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдврд╛рд▓ рд╣реИ, рддреЛ рдХрд░реЗрдВ

 gradlew.bat connectedAndroidTest 

рдФрд░ рдЖрдирдВрдж рд▓реЗрдВ рдХрд┐ рдХреИрд╕реЗ "рдЗрдВрдЬреЗрдХреНрд╢рди рд╡рд╛рд▓реЗ рд░реЛрдмреЛрдЯ, рдЗрдВрд╕рд╛рди рдирд╣реАрдВ" (рд╕реА)ред

Source: https://habr.com/ru/post/hi416397/


All Articles