рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдкреНрд░реЗрд░рдгрд╛

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



рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдПрдХ рдореБрдЦреНрдп рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдкрдврд╝рд╛, рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рдЖрдпрд╛; рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╣рдореЗрдВ рдХрд┐рд╕реА рджрд┐рди рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ? рдХрд╣рд╛рдБ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ? рдЗрди рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдирд╛рдо рдХреИрд╕реЗ рджреЗрдВ?



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



рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА:



рдкреНрд░реЗрд░рдгрд╛ рдХрд╣рд╛рдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ





рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ рдПрдХ рдЕрджреНрднреБрдд рдЦреЛрдЬ рдореЗрдВ рдЖрдпрд╛: рдпрд╣ рдкреНрд░реЗрд░рдгрд╛ рд╣рд░ рдЬрдЧрд╣ рд╣реИ, рдпрд╣ рд╣рд░ рджрд┐рди рд╣рдореЗрдВ рдШреЗрд░ рд▓реЗрддреА рд╣реИред рдХреБрдЫ рднреА рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рдмрд╕ рд▓рд┐рдпрд╛ рдФрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЦреЛрдЬ рдореБрдЭреЗ рдЗрддрдиреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рдЧреА рдХрд┐ рдореИрдВ рдЬрд▓реНрдж рд╣реА рдЗрд╕реЗ рд╕рднреА рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЬрд▓реНрджрдмрд╛рдЬреА рдХрд░рддрд╛ рд╣реВрдВред



рдЗрд╕рд▓рд┐рдП, рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рдореЗрд░реЗ рд╢реАрд░реНрд╖ -5 рд╕реНрд░реЛрддред



5. рдкреНрд░рдореБрдЦ рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВ



рдмреИрдардХ рдореЗрдВ рд╣рд░ рд╕реБрдмрд╣, рдмреЙрд╕ рдЖрдкрд╕реЗ рдкреВрдЫрддрд╛ рд╣реИ, "рдХрд▓ рдЖрдкрдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдерд╛?"

- рдЙрд╕рдиреЗ рдмрдЧ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ред

рдмреЙрд╕ рдХреЗрд╡рд▓ рдПрдХ рд╢рдмреНрдж рдирд╣реАрдВ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЦреБрджрд╛рдИ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ:

- рдХреНрдпрд╛ рдмрдЧ?

- рдареАрдХ рд╣реИ, validateReferenceNumber рд╡рд┐рдзрд┐ рддрдп рдХреАред

- рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЖрдкрдиреЗ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рддрдп рдХрд┐рдпрд╛?

"рдареАрдХ рд╣реИ, рдкрд╣рд▓реЗ рдпрд╣ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдпрд╛ рдерд╛ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЗрдирдкреБрдЯ рдкрд░ рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдм рдпрд╣ рдЧрд┐рд░рддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЧрд▓рдд рд╣реИред"



рдкрдХрдбрд╝ рд▓рд┐рдпрд╛!



рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд╛рдкреНрдд рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдЖрдкрдХреА рдирд╛рдХ рдХреЗ рд╕рд╛рдордиреЗ рд╣рд╡рд╛ рдореЗрдВ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИред рдмреИрдардХ рдХреЗ рдмрд╛рдж, рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдмреИрдареЗрдВ рдФрд░ рд▓рд┐рдЦреЗрдВ:

public class ReferenceNumberTest { @Test public void emptyStringIsNotValidReferenceNumber() { assertFalse(validateReferenceNumber("")); } }
      
      







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

рдореИрдВ рдордЬрд╛рдХ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдмрд╣реБрдд рд╕рдлрд▓ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдЬрд╛рдирддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рдмрдЬрд╛рдп, рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЬрд╛рддреА рд╣реИред



4. рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг





рдПрдХ рд╕рд╣рдХрд░реНрдореА рд╣рд░ рджрд┐рди рдЖрдкрдХреЗ рдкрд╛рд╕ рдЖрддрд╛ рд╣реИ рдФрд░ рдкреВрдЫрддрд╛ рд╣реИ:

- рд╕реБрдиреЛ, рдореИрдВ рдпрд╣рд╛рдБ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ, рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реВрдБ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореИрдВ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭ рд╕рдХрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рдЖрдк рдзреИрд░реНрдпрдкреВрд░реНрд╡рдХ рдЙрд╕реЗ рд╕рдордЭрд╛рдПрдВ:

- рдЕрдЪреНрдЫрд╛, рджреЗрдЦреЛ, рджреЗрдЦреЛ: рдмреА рдпрд╣рд╛рдВ рдЖрддрд╛ рд╣реИ, рдФрд░ рдП рдпрд╣рд╛рдВ рд╕реЗ рдирд┐рдХрд▓рддрд╛ рд╣реИ

"рдореИрдВ рдЕрднреА рднреА рдирд╣реАрдВ рд╕рдордЭ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВ рдП?"

"рдареАрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдкрддреНрд░ рдЬреЛ рдХрд┐ рдореБрдЭрд╕реЗ рдЫреЛрдЯреЗ рд╣реИрдВ, рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдЕрдЧрд▓рд╛ рдкрддреНрд░ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред"

- рдЖрд╣, рдЕрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ



рдФрд░ рдлрд┐рд░ рд╕реЗ рдкрдХрдбрд╝ рд▓рд┐рдпрд╛!



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

рд╕рд╣рдХрд░реНрдореА рдХреЗ рдХрд░реНрдо рдХреЗ рд▓рд┐рдП рдорд╛рдирд╕рд┐рдХ рд░реВрдк рд╕реЗ +1 рднреЗрдЬрддреЗ рд╣реБрдП, рд╡реЗ рдмреИрда рдЧрдП рдФрд░ рд▓рд┐рдЦрд╛:

 public class NanoTechnologySecurityTest { @Test public void shouldReturnNextLetterForAllLettersExceptJa() { assertEquals("", encodeLetter("")); } }
      
      







3. рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд



рдХрд┐рд╕реА рднреА рд╕реБрдВрджрд░ рджрд┐рди рдкрд░, рдЧреНрд░рд╛рд╣рдХ рдХреЙрд▓ рдХрд░рдХреЗ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ:

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



рдФрд░ рдлрд┐рд░, рдкрдХрдбрд╝ рд▓рд┐рдпрд╛!



рдЧреНрд░рд╛рд╣рдХ рдиреЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдХрд╛ рдкрд╛рда рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред



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



 public class TimotiFanClubRegistrationFormTest { @Test public void shouldValidateFieldsOnFormSubmission() { Form form = new Form(); assertTrue(form.isValid()); form.submit(); assertFalse(form.isSubmitted()); assertFalse(form.isValid()); form.setName("Baba Njura"); form.setEmail("Baba.Njura@yandex.ru"); form.submit(); assertTrue(form.isSubmitted()); } }
      
      







2. рдмрдЧ



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



рдкрд░реАрдХреНрд╖рдХ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирд╕рд┐рдХ рд░реВрдк рд╕реЗ (рдЙрд╕рдХреЗ рдкрд╛рд╕ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдФрд░ рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рдЕрднреА рднреА рдЕрдкрдиреЗ рдХрд░реНрдо рдХреЛ рдирд╣реАрдВ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВ), рдмреИрдареЛ рдФрд░ рд▓рд┐рдЦреЛ:

 public class LoginPageTest { @Test public void shouldBlockAccountAfter3UnsuccessfulTries() { LoginPage page = new LoginPage(); page.login("vasjok47", "Toiota"); page.login("vasjok47", "Tojota"); page.login("vasjok47", "tayota"); assertTrue(AccountDAO.getAccount("vasjok47).isBlocked()); } }
      
      







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



1. рдкреНрд░рддрд┐рдмрджреНрдз рд╕рдВрджреЗрд╢ (рдпрд╣ рд░реВрд╕реА рдореЗрдВ рдХреИрд╕реЗ рд╣реИ?)



рдпрд╣ рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рдмрд┐рдВрджреБ рд╣реИ, рдореИрдВ рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред



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



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



 public class EmailValidatorTest { @Test public void testValidateEmail() { assertTrue(validateEmail("timati@rambler.ru")); ... assertTrue(validateEmail("tina.turner@music.info")); // 4 letters now allowed! } }
      
      







рдФрд░ рдЕрдм рд╣рдо рдЗрд╕ рд╡реНрдпрд╡рд╕рд╛рдп рдХреЛ рд╕реАрд╡реАрдПрд╕ (рдФрд░ рдЬреЛ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИрдВ, рдПрд╕рд╡реАрдПрди рдореЗрдВ рд╣реИрдВ, рдФрд░ рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИрдВ, рдЬреАрдЖрдИрдЯреА рдореЗрдВ ) рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдПрдХ рдХрдорд┐рдЯ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг (рдХрдорд┐рдЯ рдореИрд╕реЗрдЬ) рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рдЖрдпрд╛ рд╣реИред рдФрд░ рдЖрдк рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 svn commit -m "       ."
      
      







рдФрд░ рдпрд╣реА рдЕрд╕рд▓реА рдЧреЛрддреНрд░ рд╣реИ!



рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред рдЕрднреА рддрдХ рдПрдиреНрдЯрд░ рдкреНрд░реЗрд╕ рди рдХрд░реЗрдВред

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

 public class EmailValidatorTest { @Test public void validEmailShouldEndWithDotFollowedBySeveralLetters() { assertTrue(validateEmail("timati@rambler.ru")); ... assertTrue(validateEmail("tina.turner@music.info")); } }
      
      







рдЕрдм рдЖрдк рдЕрдкрдиреЗ рдХрд░реНрдо рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдФрд░ рдорд╛рдирд╕рд┐рдХ рд░реВрдк рд╕реЗ +1 рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЬ рд╣рдо рд╣рд╡рд╛ рд╕реЗ рдХреБрдЫ рдЬреНрдЮрд╛рди рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдореВрд░реНрдд рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред рдЕрдм рдпрд╣ рдЬреНрдЮрд╛рди рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рдПрдЧреАред



рдЦреИрд░, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ?






All Articles