рдирдорд╕реНрдХрд╛рд░ рджреЛрд╕реНрддреЛрдВред
рдореЛрдмрд╛рдЗрд▓ QA Engineer рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХреА рдкреНрд░рддреНрдпрд╛рд╢рд╛ рдореЗрдВ, рд╣рдо рдЖрдкрдХреЗ рд╕рд╛рде рд░реЛрдЪрдХ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдПрд╕реНрдкреНрд░реЗрд╕реЛ рдХреНрдпрд╛ рд╣реИ?
рдирд╣реАрдВ, рдпрд╣ рдРрд╕рд╛ рдкреЗрдп рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╣рд░ рджрд┐рди рдкреАрдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрддреЗ рд╣реИрдВред рдПрд╕реНрдкреНрд░реЗрд╕реЛ рдЧреВрдЧрд▓ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдпрд╛ рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдЬрдЯрд┐рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХреНрдпрд╛ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдордп рд▓рдЧреЗрдЧрд╛?
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ред рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдЖрдкрдХреЛ рдкрд╣рд▓рд╛ рдХрджрдо рдЙрдард╛рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ рдФрд░ рдЕрднреА рдПрд╕реНрдкреНрд░реЗрд╕реЛ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╕реАрдЦрдирд╛ рд╕реАрдЦрддрд╛ рд╣реИред
рд╣рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдмрддрд╛рдПрдВ?
рдмреЗрд╢рдХред рд╕реНрд╡рдЪрд╛рд▓рди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдФрд░ рдорд╛рдкрдиреАрдп рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдиреНрдпреБрдЕрд▓ рдкрд░реАрдХреНрд╖рдг рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИред
рдореВрд▓ рд░реВрдк рд╕реЗ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ рд╣реИрдВ:
- рдлреНрд░реЗрдорд╡рд░реНрдХ рдЬрд┐рдиреНрд╣реЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреАрдХреГрдд рдирд╣реАрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, WebDriver, Appium, QTP ред
- рд╕реНрд░реЛрдд рдХреЛрдб рддрдХ рдкрд╣реБрдБрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрд╕реНрдкреНрд░реЗрд╕реЛ, рдХреЗрдЖрдИрдПрдл (рдХреАрдк рдЗрдЯ рдлрдВрдХреНрд╢рдирд▓) ред
рдПрд╕реНрдкреНрд░реЗрд╕реЛ рдПрдХ рдврд╛рдВрдЪрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрд░реЛрдд рдХреЛрдб рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЪрд▓реЛ рдЗрд╕реЗ рдмрдирд╛рдПрдВ!
рдПрд╕реНрдкреНрд░реЗрд╕реЛ рдХреЗ рдореБрдЦреНрдп рдШрдЯрдХ
рдПрд╕реНрдкреНрд░реЗрд╕реЛ рдореЗрдВ рддреАрди рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд┐рдзрд┐рдпрд╛рдБ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:
- ViewMatchers - рдЖрдк рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╡рд░реНрддрдорд╛рди рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ
- ViewAssertions - рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдФрд░ рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рд░рд╛рдЬреНрдп рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ
- ViewActions - рдпреЗ рд╡рд┐рдзрд┐рдпрд╛рдВ рдЖрдкрдХреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред
рдЖрдЗрдП рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЦреБрджрд╛рдИ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдПрдХ рд╕рд░рд▓ рд╕реНрд╡рдЪрд╛рд▓рди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдПрдБ
рдкрд╣рд▓реА рдЪреАрдЬрд╝ рдЬреЛ рд╣рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рд╡рд╣ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВрдЧреЗред рдЖрдЗрдП Android Studio рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
1. рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдЦреЛрд▓реЗрдВ рдФрд░ рдПрдХ рдирд┐рдЪрд▓рд╛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧрддрд┐рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдВред
Android рд╕реНрдЯреВрдбрд┐рдпреЛред рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдПрдБ2. рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо рдФрд░ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред
Android рд╕реНрдЯреВрдбрд┐рдпреЛред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо3. androidTest рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ
Android рд╕реНрдЯреВрдбрд┐рдпреЛред рд╡рд╛рджреНрдп рдкрд░реАрдХреНрд╖рдгредрдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд╣рд╛рдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдЬреЗрдпреВрдПрдирдЯ рдкрд░реАрдХреНрд╖рд╛ рд╣реИред
рдЕрдм рд╣рдореЗрдВ рдПрдХ рд╕рд░рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ
MainActivity рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдо
рдмрдирд╛рдПрдВ ред
рдЖрдЗрдП рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдПрдХ рдирд┐рдпрдо рдирд┐рдпрдо рдПрдиреЛрдЯреЗрд╢рди рдЖрдпрд╛рдд:
import org.junit.Rule;
рд░рдирд╡рд┐рде рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдкреВрд░рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓реА рдЪреАрдЬрд╝ рдХреЛ рдХреЛрдб рдХреА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
@Rule public ActivityTestRule<MainActivity> activityActivityTestRule = new ActivityTestRule<>(MainActivity.class);

рдЕрдм рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ ActivTestRule рдХреЛ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ
рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдЯреЗрд╕реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ
рдЧреНрд░реИрдбрд▓ рдХреА рдорджрдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдПрдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕реНрд╡рдЪрд╛рд▓рди рдкреНрд░рдгрд╛рд▓реАред
рдЪрд▓реЛ
рдЧреНрд░реЗрдбрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЬреЛрдбрд╝реЗрдВред
рдмрд┐рд▓реНрдб.рдЧреНрд░реЗрдбрд▓ (рдореЙрдбреНрдпреВрд▓: рдРрдк) рдирд╛рдордХ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдиреАрдЪреЗ рджреА рдЧрдИ рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ:
androidTestImplementation 'com.android.support.test:rules:1.0.2'
Android рд╕реНрдЯреВрдбрд┐рдпреЛред рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝реЗрдВредрдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВред
рдЕрдм рдЬрдм рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЕрдЧрд▓рд╛ рдЪрд░рдг рдЗрд╕реЗ рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯрд▓ рдЯреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реИ:
import androidx.test.rule.ActivityTestRule;
Android рд╕реНрдЯреВрдбрд┐рдпреЛред рдПрдХреНрдЯрд┐рд╡рд┐рдЯреАрдЯрд╛рдЗрд╕реНрдЯ рдирд┐рдпрдо рдЖрдпрд╛рдд рдХрд░реЗрдВредрдареАрдХ рд╣реИ, рдЕрдм рд╣рдо рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдЗрд╕ рдХреЛрдб рдХреЛ
ExampleInstrumentedTest рдореЗрдВ рджрд░реНрдЬ рдХрд░реЗрдВ:
@Test public void clickButtonHome(){ onView(withId(R.id.navigation_home)).perform(click()).check(matches(isDisplayed())); }
Android рд╕реНрдЯреВрдбрд┐рдпреЛред рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдЗрдЯрдо рдЖрдпрд╛рдд рдХрд░рдирд╛рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХрд╛рдо рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рддрддреНрд╡реЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдареАрдХ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ
рдХрд░реЗрдВ , рдФрд░ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ!
рдПрд╕реНрдкреНрд░реЗрд╕реЛ рдЯреЗрд╕реНрдЯ рдЪрд▓ рд░рд╣рд╛ рд╣реИ
рдмрд╛рдИрдВ рдУрд░ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░
"Run ExampleInstrumentedTest" рдЪреБрдиреЗрдВ ред

рдЪреВрдВрдХрд┐ рдпрд╣ рдПрдХ
рдпреВрдЖрдИ рдЯреЗрд╕реНрдЯ рд╣реИ , рди рдХрд┐ рдПрдХ
рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ, рддреЛ рд╣рдо рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдкрд╕рдВрдж рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдВрдбреЛ рджреЗрдЦреЗрдВрдЧреЗ, рдЬрд┐рд╕ рдкрд░ рд╣рдо рдЗрд╕реЗ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ "Nexus 5X" рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕реЗ рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рдЖрдкрдиреЗ рдХрднреА рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рддреИрдирд╛рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЕрдкрдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдпрд╛
"рдирдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдмрдирд╛рдПрдВ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЗрдореНрдпреВрд▓реЗрдЯреЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдмрдирд╛рдПрдВред рдпрд╣ рдЙрд╕ рд╕реВрдЪреА рд╕реЗ рдХреЛрдИ рднреА рдЙрдкрдХрд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдареАрдХ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЬрд╛рджреВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдПрдВ!
Android рд╕реНрдЯреВрдбрд┐рдпреЛред рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдордЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ: рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг, рдЬреЛ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирдиреЗ рдХреЗ рдмрд╛рдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдерд╛, рдФрд░ рд╣рдорд╛рд░рд╛
рдХреНрд▓рд┐рдХрд╣реЙрдЯрдмрдЯрди рдкрд░реАрдХреНрд╖рдг, рдЬреЛ рд╣рдордиреЗ рдЕрднреА рд▓рд┐рдЦрд╛ рдерд╛ред
Android рд╕реНрдЯреВрдбрд┐рдпреЛред рдкреВрд░реА рд╣реБрдИ рдкрд░реАрдХреНрд╖рд╛редрдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рд╣реА
рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд╣рдордиреЗ рдХреЗрд╡рд▓ рдирд┐рдЪрд▓реЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдореЗрдВ рдПрдХ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ
MainActivity рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ
"navigation_home" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЗрдП рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ рдХрд┐ рд╣рдордиреЗ рддрд░реАрдХреЛрдВ рдХреА рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдХреНрдпрд╛ рдХрд┐рдпрд╛:
public void clickButtonHome(){ onView(withId(R.id.navigation_home)).perform(click()).check(matches(isDisplayed())); }
- 1. onView рдХреЙрд▓ рдХрд░реЗрдВ ред рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╡реНрдпреВрдореИрдЪрд░реНрд╕ рд╣реИ ред рд╣рдореЗрдВ рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдорд┐рд▓рддреА рд╣реИред
- 2. рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдкреНрд░рджрд░реНрд╢рди (рдХреНрд▓рд┐рдХ ()) рдХрд╣рддреЗ рд╣реИрдВ ред рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА ViewActions рд╣реИ ред рд╣рдо рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рдПрдХ рдХреНрд▓рд┐рдХ (рдХреНрд▓рд┐рдХ) рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрд╕реНрдкреНрд░реЗрд╕реЛ рдореЗрдВ рдХрдИ рдФрд░ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдп рд╡рд┐рдзрд┐рдпрд╛рдБ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:
- 3. рдЖрдЦрд┐рд░реА рдЪреАрдЬ рдЬреЛ рд╣рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рд╡рд╣ рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЬреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдереА рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рдорд╛рдирджрдВрдбреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдЪреЗрдХ (isDisplayed ()) рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ ViewAssertions рдХреА рдПрдХ рд╡рд┐рдзрд┐ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ (рджреГрд╢реНрдп) рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рдж рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
Android рджреГрд╢реНрдп рдкрджрд╛рдиреБрдХреНрд░рдо
рдкреНрд░рд┐рдп рдкрд╛рдардХ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЖрдкрдХреЛ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдХрд┐ рдПрд╕реНрдкреНрд░реЗрд╕реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА
рдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕рдордЭрдирд╛ рд╢рд╛рдпрдж рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реБрдЖ рд╣реИ рдЕрдЧрд░ рдЖрдкрдХреЛ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпреЗ рд╕рднреА рдмрдЯрди рдХрд╣рд╛рдВ рд╕реНрдерд┐рдд рд╣реИрдВ рдФрд░ рд╡реЗ рдХрд╣рд╛рдВ рд╕реЗ рдЖрддреЗ рд╣реИрдВред рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдмрд╛рдИрдВ рдУрд░
"Res" рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ,
"рдореЗрдиреВ" рдлрд╝реЛрд▓реНрдбрд░
рдЦреЛрд▓реЗрдВ рдФрд░
"bottom_nav_menu.xml" рдЪреБрдиреЗрдВ ред
рдпрд╣рд╛рдБ рд╣рдо рдХреНрдпрд╛ рджреЗрдЦреЗрдВрдЧреЗ:
Android рд╕реНрдЯреВрдбрд┐рдпреЛред рдирд┐рдЪрд▓реЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдореЗрдиреВ рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рдкрджрд╛рдиреБрдХреНрд░рдоредрдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╡рд╣ рд▓рд╛рдЗрди рд╣реИ рдЬреЛ рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдо рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ:
android:id="@+id/navigation_home"
рдпрд╣реА рд╣рдо рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдиреАрдЪреЗ рднреА
рдиреЗрд╡рд┐рдЧреЗрд╢рди_рдбреИрд╢рдмреЛрд░реНрдб рдФрд░
рдиреЗрд╡рд┐рдЧреЗрд╢рди_рдиреЛрдЯрд┐рдмрд┐рд▓рд┐рдЯреАрдЬрд╝ рдореЗрдиреВ рдмрдЯрди рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рддреЛ рдЪрд▓рд┐рдП рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВред
рдЕрдзрд┐рдХ рдПрд╕реНрдкреНрд░реЗрд╕реЛ рдЯреЗрд╕реНрдЯ
рд╣рдореЗрдВ
ExampleInstrumentedTest рдлрд╝рд╛рдЗрд▓ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдиреЗ рдФрд░ рдХреБрдЫ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
@Test public void clickButtonDashboard(){ onView(withId(R.id.navigation_dashboard)).perform(click()).check(matches(isDisplayed())); } @Test public void clickButtonNotification(){ onView(withId(R.id.navigation_notifications)).perform(click()).check(matches(isDisplayed())); }
рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реА рдЧрдИ рдПрдХрдорд╛рддреНрд░ рдЪреАрдЬрд╝ рдХрдИ рдФрд░ рдореЗрдиреВ рдЖрдЗрдЯрдореЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣реА рдереА:
"рдиреЗрд╡рд┐рдЧреЗрд╢рди_рдбреИрд╢рдмреЛрд░реНрдб" рдФрд░
"рдиреЗрд╡реАрдЧреЗрд╢рди_рдиреЛрдЯрд┐рдлрд╝рд┐рдХреЗрд╢рди" ред
Android рд╕реНрдЯреВрдбрд┐рдпреЛред рджреЛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝реЗрдВредрдмреЗрд╢рдХ, рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдФрд░ рднреА рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрдЗрдП рд╣рдо рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╡реЗ рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред
рдЖрдЗрдП рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬрд╛рд░реА рд░рдЦреЗрдВ рдФрд░ рдЪрд▓рд╛рдПрдВред
рд░рди рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
Android рд╕реНрдЯреВрдбрд┐рдпреЛред рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдоредрд╕рднреА 4 рдЯреЗрд╕реНрдЯ рдкрд╛рд╕ рд╣реБрдПред рджреГрд╢реНрдп рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рд╕рднреА рджреГрд╢реНрдп рдкрд╛рдП рдЧрдП, рдХреНрд▓рд┐рдХ рдХрд┐рдП рдЧрдП рдФрд░ рдкреБрд╖реНрдЯрд┐ рдХреА рдЧрдИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдПрд╕реНрдкреНрд░реЗрд╕реЛ рдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рдорд╛рдзрд╛рди рд╣реИред рдЕрдм рдЬрдм рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рдЬрдЯрд┐рд▓ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред
рдПрдХ рдЕрдЪреНрдЫрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ!