рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдкрд░ рдЯреНрд░рдВрдХ рдпрд╛ рдЯреЗрд╕реНрдЯ-рдкреНрд░реЗрд░рд┐рдд рд╡рд┐рдХрд╛рд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдПрдХ рдкрд┐рд░рд╛рдорд┐рдб рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреИрд╕реЗ рдХрд░реЗрдВ

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


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


  • рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг - рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рд▓реЙрдХ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕, рд░рд┐рдбрд┐рдлрд╛рдЗрди рдкреИрд░рд╛рдореАрдЯрд░ рдЖрджрд┐ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рдлреЛрдХрд╕ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг - рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ, рдХреЗрд╡рд▓ рд╡реЗрдм, рдЖрджрд┐ред
  • рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛ рд╕рдорд░реНрдерди - рдЗрди-рдореЗрдореЛрд░реА рдбреЗрдЯрд╛рдмреЗрд╕, рд╕рдВрджреЗрд╢ рдХрддрд╛рд░, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг
  • рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реАрдХреНрд╖рдг (рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рдЕрдиреБрдмрдВрдз)
  • HtmlUnit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдм UI рдкрд░реАрдХреНрд╖рдг рд╕рдорд░реНрдерди
  • рдЖрд╡реЗрджрди рд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рд▓рдЪреАрд▓рд╛рдкрди - рдкреНрд░реЛрдлрд╛рдЗрд▓, рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдиреНрдпрд╛рд╕, рдШрдЯрдХ, рдЖрджрд┐ред
  • рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ

рдЯреАрдбреАрдбреА рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рдЪрдпред


рдкрд░реАрдХреНрд╖рдг рд╕рдВрдЪрд╛рд▓рд┐рдд рд╡рд┐рдХрд╛рд╕


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


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


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


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


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


  • "TDD рдХреЛрдб рдХрд╛ рд▓рдЧрднрдЧ 100% рдХрд╡рд░реЗрдЬ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ" - рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ 100% рдХрд╡рд░реЗрдЬ рд╕реЗ рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реИред рдХрдИ рдЯреАрдореЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдЗрд╕ рдореАрдЯреНрд░рд┐рдХ рдХреЛ рдорд╛рдкрд╛ рднреА рдирд╣реАрдВ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕реЗ рд╡реИрдирд┐рдЯреА рдореАрдЯреНрд░рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рд╣рд╛рдБ, 100% рдкрд░реАрдХреНрд╖рдг рдХрд╡рд░реЗрдЬ рдХрд╛ рдорддрд▓рдм рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
  • "рдЯреАрдбреАрдбреА рдХреЗрд╡рд▓ рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдХрдард┐рди рд░рд╛рдЬреНрдп рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ" рдПрдХ рдмрд╣реБрдд рд╣реА рд▓реЛрдХрдкреНрд░рд┐рдп рдмрд╣рд╛рдирд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ "рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдЬрдЯрд┐рд▓ рдЖрд╡реЗрджрди рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЖрдк рдЗрд╕реЗ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред" рдореИрдВрдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ - рд╡реЗрдм (рдПрд╕рдкреАрдП рдХреЗ рд╕рд╛рде рдФрд░ рдмрд┐рдирд╛), рдореЛрдмрд╛рдЗрд▓, рдПрдкреАрдЖрдИ, рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕, рдореЛрдиреЛрд▓рд┐рде, рдЬрдЯрд┐рд▓ рдмреИрдВрдХрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо, рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо, рдлреНрд░реЗрдорд╡рд░реНрдХ, рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдЦреБрджрд░рд╛ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЯреАрдбреАрдбреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рджреЗрдЦрд╛ред рддреЛ рд▓реЛрдХрдкреНрд░рд┐рдп рдорд┐рдердХ "рд╣рдо рдЕрджреНрд╡рд┐рддреАрдп рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдЕрд▓рдЧ рд╣реИ" рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдПрдХ рдмрд╣рд╛рдирд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдкреНрд░рдпрд╛рд╕ рдФрд░ рдзрди рдХрд╛ рдирд┐рд╡реЗрд╢ рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░рдг рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ)ред
  • "рдЕрднреА рднреА рдЯреАрдбреАрдбреА рдХреЗ рд╕рд╛рде рдХреАрдбрд╝реЗ рд╣реЛрдВрдЧреЗ" - рдмреЗрд╢рдХ, рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреА рддрд░рд╣ред рдЯреАрдбреАрдбреА рдмрдЧ рдпрд╛ рдЙрдирдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдг рд╣реИред рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреА рддрд░рд╣ред рдПрдХ IDE рдХреА рддрд░рд╣ред рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреА рддрд░рд╣ред рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдмрдЧ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рд╡реЗ рдХреЗрд╡рд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рдмрдврд╝рддреА рдЬрдЯрд┐рд▓рддрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред

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

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


рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдореВрдирд╛ рдпреЛрдЬрдирд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдлрд┐рд▓рд╣рд╛рд▓ рджреЗрдЦрддрд╛ рд╣реВрдВ, рд╡рд╣ рд╣реИ:


  1. рдЪрд▓рдирд╛ рдХрдВрдХрд╛рд▓ - рдЖрд╡реЗрджрди рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдЬрд╣рд╛рдВ рдЖрдк рд░реЗрдб-рдЧреНрд░реАрди-рд░рд┐рдлреИрдХреНрдЯрд░ рдЪрдХреНрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ
  2. рдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░реЗрд░рд┐рдд рдбрд┐рдЬрд╛рдЗрди
  3. рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ (рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛)
  4. рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг (рд╡рд╕рдВрдд рд╕реБрд░рдХреНрд╖рд╛)
  5. рдЬреЗрдЯ рд╕реНрдЯреИрдХ (рд╡реЗрдмрдлреНрд▓рдХреНрд╕ + рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдПрдХреНрдЯрд░)
  6. (рдорд╛рдЗрдХреНрд░реЛ) рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдЕрдиреБрдмрдВрдзреЛрдВ рдХреА рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд┐рд▓рд┐рдЯреА (рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб)
  7. рдкрд░реАрдХреНрд╖рдг рд╕рдВрджреЗрд╢ рдкрдВрдХреНрддрд┐рдмрджреНрдз рдХрд░рдирд╛ (рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб)

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


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╣рд╛рдиреА рдПрдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИ рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╣рд╛рдиреА 1: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрд╡рд╛рдЧрдд рдкреГрд╖реНрда рджреЗрдЦрддрд╛ рд╣реИ


рдРрд▓рд┐рд╕ рдХреЗ рд░реВрдк рдореЗрдВ , рдПрдХ рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
рдХреЗрдХ рдлреИрдХреНрдЯреНрд░реА рдХреА рд╡реЗрдм-рд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рдХрд░ рдореИрдВ рдПрдХ рд╕реНрд╡рд╛рдЧрдд рдпреЛрдЧреНрдп рдкреГрд╖реНрда рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ
рддрд╛рдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓реЗ рдХрд┐ рдХрдм рдХреЗрдХ рдлреИрдХреНрдЯреНрд░реА рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣реИ

рд╕реНрд╡реАрдХреГрддрд┐ рдорд╛рдирджрдВрдб:
рдкрд░рд┐рджреГрд╢реНрдп: рд▓реЙрдиреНрдЪ рдХреА рддрд╛рд░реАрдЦ рд╕реЗ рдкрд╣рд▓реЗ рд╡реЗрдм-рд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдореИрдВ рдПрдХ рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реВрдВ
рдЬрдм рдореИрдВ рдХреЗрдХ рдлреИрдХреНрдЯрд░реА рд╡реЗрдм-рд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рддрд╛ рд╣реВрдВ
рддрдм рдореБрдЭреЗ рдПрдХ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ 'рдЖрдкрдХреА рд░реБрдЪрд┐ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж'
рдФрд░ рдореБрдЭреЗ рдПрдХ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ 'рд╡реЗрдм-рд╕рд╛рдЗрдЯ рдЬрд▓реНрдж рд╣реА рдЖ рд░рд╣реА рд╣реИ ...'

рдпрд╣ рдЬреНрдЮрд╛рди рд▓реЗрдЧрд╛: рд╡реНрдпрд╡рд╣рд╛рд░-рд╡рд┐рдХрд╛рд╕ рдФрд░ рдХрдХрдбрд╝реА рдХреНрдпрд╛ рд╣реИ, рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдкрд░реАрдХреНрд╖рдг рдХреА рдореВрд▓ рдмрд╛рддреЗрдВред


рдкрд╣рд▓реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╣рд╛рдиреА рдХрд╛рдлреА рдмреБрдирд┐рдпрд╛рджреА рд╣реИ, рд▓реЗрдХрд┐рди рд▓рдХреНрд╖реНрдп рдЕрднреА рдЬрдЯрд┐рд▓рддрд╛ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдХрд╛рд▓ рдмрдирд╛рдиреЗ рдореЗрдВ - рдЯреАрдбреАрдбреА рдЪрдХреНрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреНрдпреВрдирддрдо рдЖрд╡реЗрджрдиред


рд╡реЗрдм рдФрд░ рдореВрдВрдЫ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд╕реНрдкреНрд░рд┐рдВрдЧ рдкреНрд░рд┐рдиреНрдЯрд┐рдЬрд╝рд░ рдкрд░ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдирд┐рд░реНрдорд╛рдг build.gradle рд▓рд┐рдП рдХреБрдЫ рдФрд░ рдмрджрд▓рд╛рд╡реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:


  • HtmlUnit testImplementation('net.sourceforge.htmlunit:htmlunit') ред рдЖрдкрдХреЛ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЧреНрд░реИрдбрд▓ рдХреЗ рд▓рд┐рдП рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрди рдкреНрд▓рдЧрдЗрди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдФрд░ рд╕рдВрдЧрдд рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЪрдпрди рдХрд░реЗрдЧрд╛
  • рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ JUnit 4 рд╕реЗ JUnit 5 рдкрд░ рд▓реЗ рдЬрд╛рдПрдВ (рдХреНрдпреЛрдВрдХрд┐ 2018 рдпрд╛рд░реНрдб рдореЗрдВ рд╣реИ)
  • рдХрдХрдбрд╝реА рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝реЗрдВ - рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬрд┐рд╕реЗ рдореИрдВ рдмреАрдбреАрдбреА рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛
  • рдбрд┐рдлрд╝реЙрд▓реНрдЯ CakeFactoryApplicationTests рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп contextLoads рд╕рд╛рде рдмрдирд╛рдпрд╛ рд╣рдЯрд╛ рджреЗрдВ

рджреНрд╡рд╛рд░рд╛ рдФрд░ рдмрдбрд╝реЗ, рдпрд╣ рдЖрд╡реЗрджрди рдХрд╛ рдореВрд▓ "рдХрдВрдХрд╛рд▓" рд╣реИ, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╣рд▓рд╛ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред


рдХреЛрдб рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рддрдХрдиреАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред


рдХрдХрдбрд╝реА


рдХрдХрдбрд╝реА рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░-рдкреНрд░реЗрд░рд┐рдд рд╡рд┐рдХрд╛рд╕ рдврд╛рдВрдЪрд╛ рд╣реИ рдЬреЛ "рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ" рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рдг (рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди) рдЪрд▓рд╛рдПрдВред рдХрдХрдбрд╝реА рдкреНрд▓рдЧрдЗрди рдЬрд╛рд╡рд╛ (рдФрд░ рдХрдИ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ) рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ @Given , @When , @Then рдФрд░ рдЕрдиреНрдп рдПрдиреЛрдЯреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдПрдиреЛрдЯреЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИрдВред


HtmlUnit


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


рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдг


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


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

рддреЛ, рдореЗрд░реА рдкрд╣рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛ред


 Feature: Welcome page Scenario: a user visiting the web-site visit before the launch date Given a new user, Alice When she visits Cake Factory web-site Then she sees a message 'Thank you for your interest' And she sees a message 'The web-site is coming in December!' 

рдпрджрд┐ рдЖрдк рдЪрд░рдг рд╡рд┐рд╡рд░рдг рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ ( Intellij IDEA рдкреНрд▓рдЧрдЗрди Gherkin рдХреЛ рдмрд╣реБрдд рд╕рд╣рд╛рдпрддрд╛ рдХрд░рддрд╛ рд╣реИ) рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рд╣рд░рд╛ рд╣реЛрдЧрд╛ - рдпрд╣ рдЕрднреА рддрдХ рдХреБрдЫ рднреА рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рдкрд░реАрдХреНрд╖рдг рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪрд░рдг рдЖрддрд╛ рд╣реИ - рдЖрдкрдХреЛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдореБрдЦреНрдп рдХреЛрдб рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ ред


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


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

рд▓рд╛рд▓


рдЗрд╕рд▓рд┐рдП, рдЕрдкрдиреА рдкрд╣рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдг рд╡рд┐рд╡рд░рдг рддреИрдпрд╛рд░ рдХрд┐рдП:


 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class WelcomePage { private WebClient webClient; private HtmlPage page; @LocalServerPort private int port; private String baseUrl; @Before public void setUp() { webClient = new WebClient(); baseUrl = "http://localhost:" + port; } @Given("a new user, Alice") public void aNewUser() { // nothing here, every user is new by default } @When("she visits Cake Factory web-site") public void sheVisitsCakeFactoryWebSite() throws IOException { page = webClient.getPage(baseUrl); } @Then("she sees a message {string}") public void sheSeesAMessageThanksForYourInterest(String expectedMessage) { assertThat(page.getBody().asText()).contains(expectedMessage); } } 

рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛:


  • рдлреАрдЪрд░реНрд╕ рдПрдХ рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рд╣реИрдВ, Features.java JUnit 4 рд╕реЗ RunWith рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдХрдХрдбрд╝реА рд╕рдВрд╕реНрдХрд░рдг 5, RunWith рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
  • @SpringBootTest рдПрдиреЛрдЯреЗрд╢рди рдЪрд░рдгреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, cucumber-spring рдЗрд╕реЗ рд╡рд╣рд╛рдВ рд╕реЗ рдЙрдард╛рддрд╛ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╕рдВрджрд░реНрдн рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ (рдпрд╛рдиреА, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ)
  • рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕реНрдкреНрд░рд┐рдВрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧ webEnvironment = RANDOM_PORT рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреЛрд░реНрдЯ @LocalServerPort рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ @LocalServerPort , рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЛ рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рдорд┐рд▓реЗрдЧрд╛ рдФрд░ рд╕рд░реНрд╡рд░ рдкреЛрд░реНрдЯ рдкрд░ рдлрд╝реАрд▓реНрдб рдорд╛рди рд╕реЗрдЯ рдХрд░реЗрдЧрд╛

рдФрд░ рдкрд░реАрдХреНрд╖рдг, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, 404 for http://localhost:51517 рддреНрд░реБрдЯрд┐ 404 for http://localhost:51517 рд╕рд╛рде рдХреНрд░реИрд╢ред


рдЬрд┐рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХреНрд░реИрд╢ рд╣реЛрддрд╛ рд╣реИ рд╡реЗ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдпреВрдирд┐рдЯ рдпрд╛ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рдФрд░ рдпреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдПрдкреАрдЖрдИ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрддреА рд╣реИрдВред рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг NullPointerException рд╕рд╛рде рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ NullPointerException рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди BaseUrl configuration property is not set - рдмрд╣реБрдд рдмреЗрд╣рддрд░ред

рдЧреНрд░реАрди


рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╣рд░рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдиреНрдпреВрдирддрдо HTML рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдзрд╛рд░ рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рджреГрд╢реНрдп рдЬреЛрдбрд╝рд╛:


 @Controller public class IndexController { @GetMapping public String index() { return "index"; } } 

 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Cake Factory</title> </head> <body> <h1>Thank you for your interest</h1> <h2>The web-site is coming in December!</h2> </body> </html> 

рдкрд░реАрдХреНрд╖рдг рд╣рд░рд╛ рд╣реИ, рдЖрд╡реЗрджрди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЧрдВрднреАрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдбрд┐рдЬрд╛рдЗрди рдХреА рдкрд░рдВрдкрд░рд╛ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред


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

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


Refactor


рдкрд╣рд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ, рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд░реАрдлрд╝реИрдХреНрдЯрд░рд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ 10 рдорд┐рдирдЯ рдмреБрд▓рдорд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЪреБрдирдиреЗ рдореЗрдВ рдмрд┐рддрд╛рдП, рдЬрд┐рд╕реЗ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрд┐рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ!


рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ


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


рд╕рдВрджрд░реНрдн



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

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


All Articles