рдбрдореА рдХреЗ рд▓рд┐рдП рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг

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



рдЖрдк рдЬреЛ рдХрд░рддреЗ рд╣реИрдВ рдЙрд╕реЗ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрдирдореЗрдВ рдХрдИ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВред рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрдИ рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХ рдПрдХ рд╕рд╛рде рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

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

рд╣рдореЗрдВ рдФрд░ рдЧрд╣рд░реЗ рдЬрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ



рдкрд╣рд▓реЗ, рдЪрд▓реЛ рдкрд┐рдЫрд▓реЗ рд╕реНрддрд░ рддрдХ рдиреАрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдЕрд▓рдЧ рд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

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

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




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

рдХреНрдпрд╛ рдЖрдкрдХреЛ рдпрд╣ рд╕рдм рдЪрд╛рд╣рд┐рдП? рдореЗрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЙрддреНрддрд░ "рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ рд╣реИред"

рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ




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

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



рдЙрдЪрд┐рдд рдкрд░реАрдХреНрд╖рдг рдХрд╡рд░реЗрдЬ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЬрд▓реНрдж рд╣реА рдпрд╛ рдмрд╛рдж рдореЗрдВ рдЦрд░реЛрдВрдЪ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд░реНрдмрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдЕрдкрдиреЗ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ, рдореИрдВ рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рдкреБрд░рд╛рдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрдИ рдмрд╛рд░ рдорд┐рд▓рд╛ рд╣реВрдВред рд╡реЗ рддреАрди рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ:


рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдПрдХ рдХрдард┐рди рдЕрдЦрд░реЛрдЯ рд╣реИрдВ, рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдХрдард┐рди рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдЙрдирдХреА рд▓рд╛рдЧрдд рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдЦрд░реЛрдВрдЪ рд╕реЗ рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЗ рдмрд░рд╛рдмрд░ рдпрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддреА рд╣реИред

рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдБ рдХреНрдпреЛрдВ рд╣реИрдВ?

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

рдХреЛрдб рдХреЗ рдЕрдВрдзреЗрд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреНрд░рдмрд▓ рди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмреБрдирд┐рдпрд╛рджреА рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рдЪрд╛рд╣рд┐рдП:


рдЗрди рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдзреИрд░реНрдп рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХреНрд░рдо рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВред

рдЕрдкрдиреЗ VCS рдореЗрдВ рддрд╛рд░реНрдХрд┐рдХ рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд╛рди рдЪреБрдиреЗрдВ

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

рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдирд╛рдо рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдЪреБрдиреЗрдВ

рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ: рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ <PROJECT_NAME> .рдХреЛрд░, <PROJECT_NAME> .Bl рдФрд░ <PROECTECT_NAME> рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХреБрдЫ рднрд╛рдЧ рд╣реИрдВ? <PROJECT_NAME> .Core.Tests, <PROJECT_NAME> .Bl.Tests рдФрд░ <PROECTECT_NAME> .Web.Tests рдЬреЛрдбрд╝реЗрдВред

рдЗрд╕ рдирд╛рдордХрд░рдг рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реИред рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк .Tests.dll рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд░реАрдХреНрд╖рдг рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдирд╛рдордХрд░рдг рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

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

рдкрд░реАрдХреНрд╖рдг рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдирд╛рдордХрд░рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ "рдмрд╛рдд" рд╡рд┐рдзрд┐ рдЪреБрдиреЗрдВ

TestLogin рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдирд╛рдо рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ? рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреНрдпрд╛ рд╣реИрдВ? рдХреНрдпрд╛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдФрд░ рдЕрдкрд╡рд╛рдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ?

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рддрд░реАрдХреЛрдВ рдХрд╛ рдирд╛рдо рд░рдЦрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ: [рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐] _ [рд╕реНрдХреНрд░рд┐рдкреНрдЯ] _ [рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░] ред
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд░реНрдЧ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдпреЛрдЧ рд╣реИ, рдЬреЛ (рд╣реИрд▓реЛ, рдХреИрдк!) рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

lass CalculatorTests { public void Sum_2Plus5_7Returned() { // тАж } } 

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

рдПрдХ рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪрд╛ рдЪреБрдиреЗрдВ рдЬреЛ рдЖрдкрдХреЛ рд╕реВрдЯ рдХрд░реЗ

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

рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рдореАрдХреНрд╖рд╛ рдкрд░ рдереЛрдбрд╝рд╛ рдФрд░ рдзреНрдпрд╛рди рджреЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдИ .NET рдбреЗрд╡рд▓рдкрд░реНрд╕ MsTest рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред рдореБрдЭреЗ NUnit рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрд╕рдВрдж рд╣реИред рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝реЛрд▓реНрдбрд░ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдорд╛рдирдХреАрдХреГрдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИред рдореИрдВ рдмрд╕ рдЖрд╕рд╛рдиреА рд╕реЗ Resharper рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ NUnit рдкрд░ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВред рдХреЛрдИ xUnit рдХреЗ рд▓рд╛рд▓рд┐рддреНрдп рдХреЛ рдкрд╕рдВрдж рдХрд░реЗрдЧрд╛: рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛, рдЯрд┐рдпрд░рдбрд╛рдЙрди рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдИрдбреАрд╕рд┐рд╕реЛрдкреНрд▓реАрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ред

рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВ?

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


рд╣рдо рдкрд╣рд▓реЗ рдЪрд░рдо рдорд╛рдорд▓реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ: рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рд░рд▓ рдХреЛрдб рдФрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдЬрдЯрд┐рд▓ рдХреЛрдбред

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

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


рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╢рд░реАрд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдПрдХ рд╣реА рд╢реИрд▓реА рдХреЗ рд▓рд┐рдП рдЫрдбрд╝реА

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

 class CalculatorTests { public void Sum_2Plus5_7Returned() { // arrange var calc = new Calculator(); // act var res = calc.Sum(2,5); // assert Assert.AreEqual(7, res); } } 


рд▓рд┐рдЦрдиреЗ рдХрд╛ рдпрд╣ рд░реВрдк рдкрдврд╝рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ

 class CalculatorTests { public void Sum_2Plus5_7Returned() { Assert.AreEqual(7, new Calculator().sum(2,5)); } } 


рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕ рдХреЛрдб рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рдЪреАрдЬ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ

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

рдирд╢реЗ рдХреА рд▓рдд рд╕реЗ рд▓рдбрд╝рдирд╛

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

 public class AccountManagementController : BaseAdministrationController { #region Vars private readonly IOrderManager _orderManager; private readonly IAccountData _accountData; private readonly IUserManager _userManager; private readonly FilterParam _disabledAccountsFilter; #endregion public AccountManagementController() { _oms = OrderManagerFactory.GetOrderManager(); _accountData = _ orderManager.GetComponent<IAccountData>(); _userManager = UserManagerFactory.Get(); _disabledAccountsFilter = new FilterParam("Enabled", Expression.Eq, true); } } 

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

 public class AccountManagementController : BaseAdministrationController { #region Vars private readonly IOrderManager _oms; private readonly IAccountData _accountData; private readonly IUserManager _userManager; private readonly FilterParam _disabledAccountsFilter; #endregion public AccountManagementController() { _oms = OrderManagerFactory.GetOrderManager(); _accountData = _oms.GetComponent<IAccountData>(); _userManager = UserManagerFactory.Get(); _disabledAccountsFilter = new FilterParam("Enabled", Expression.Eq, true); } /// <summary> /// For testability /// </summary> /// <param name="accountData"></param> /// <param name="userManager"></param> public AccountManagementController( IAccountData accountData, IUserManager userManager) { _accountData = accountData; _userManager = userManager; _disabledAccountsFilter = new FilterParam("Enabled", Expression.Eq, true); } } 


рдЕрдм рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдкрд╛рд╕ рдПрдХ рдирдпрд╛ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИ, рдФрд░ рд╣рдо рд╡рд╣рд╛рдВ рдЕрдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдирдХрд▓реА рдФрд░ рд╕реНрдЯреЙрдХреНрд╕

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

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

рдЖрд╡реЗрд╢



 [Test] public void LogIn_ExisingUser_HashReturned() { // Arrange OrderProcessor = Mock.Of<IOrderProcessor>(); OrderData = Mock.Of<IOrderData>(); LayoutManager = Mock.Of<ILayoutManager>(); NewsProvider = Mock.Of<INewsProvider>(); Service = new IosService( UserManager, AccountData, OrderProcessor, OrderData, LayoutManager, NewsProvider); // Act var hash = Service.LogIn("ValidUser", "Password"); // Assert Assert.That(!string.IsNullOrEmpty(hash)); } 


рджрд┐рдЦрд╛рд╡рдЯреА



 [Test] public void Create_AddAccountToSpecificUser_AccountCreatedAndAddedToUser() { // Arrange var account = Mock.Of<AccountViewModel>(); // Act _controller.Create(1, account); // Assert _accountData.Verify(m => m.CreateAccount(It.IsAny<IAccount>()), Times.Exactly(1)); _accountData.Verify(m => m.AddAccountToUser(It.IsAny<int>(), It.IsAny<int>()), Times.Once()); } 


рд╕реНрд╡рд╛рд╕реНрдереНрдп рдкрд░реАрдХреНрд╖рдг рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░реАрдХреНрд╖рдг

рдореЛрдХ рдФрд░ рд╕реНрдЯрдмреНрд╕ рдХреЗ рдмреАрдЪ рдкреНрд░рддреАрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдорд╣рддреНрд╡рд╣реАрди рдЕрдВрддрд░ рдХреЛ рд╕рдордЭрдирд╛ рдХреНрдпреЛрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ? рдЖрдЗрдП рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рд┐рдВрдЪрд╛рдИ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:

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

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

рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдкрд░реАрдХреНрд╖рдг

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

рдЗрдиреНрд╕реБрд▓реЗрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ

рд╣рдо рдЕрдкрдиреЗ рджрдо рдкрд░ рдореЛрдХреА рдФрд░ рд╕реНрдЯрдмреНрд╕ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдИ рдХрд╛рд░рдг рд╣реИрдВ рдЬреЛ рдореИрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рдирд╣реАрдВ рджреЗрддрд╛:


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

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

рд╕реВрдЪреАрдмрджреНрдз рдЕрд▓рдЧрд╛рд╡ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╢реЛрдХреЗрд╕ рдпрд╣рд╛рдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрдХрдиреАрдХреА рдкрд╣рд▓реБрдУрдВ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИрдмреЗ рдкрд░ рдЦреЛрдЬрдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛

рдЖрдЗрдП рдирд┐рдпрдВрддреНрд░рдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред

 public AccountManagementController( IAccountData accountData, IUserManager userManager) { _accountData = accountData; _userManager = userManager; _disabledAccountsFilter = new FilterParam("Enabled", Expression.Eq, true); } 

рдпрд╣рд╛рдБ рд╣рдо "рдереЛрдбрд╝рд╛ рдЦреВрди" рдХреЗ рд╕рд╛рде рдЙрддрд░ рдЧрдПред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕рдм рдХреБрдЫ рд╣рдореЗрд╢рд╛ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЖрдЗрдП рдореБрдЦреНрдп рдорд╛рдорд▓реЛрдВ рдХреЛ рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдо рдирд┐рд░реНрднрд░рддрд╛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЗрдВрдЬреЗрдХреНрд╢рди

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

рдлреИрдХреНрдЯрд░реА рдЗрдВрдЬреЗрдХреНрд╢рди

рдпрджрд┐ рдЖрдк IUserManagerFactory рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрд╛рджрди рдХреЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕реЗрдЯрд░ рдореБрдЦреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗ "рдЫрд┐рдкреА" рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

 public class UserManagerFactory { private IUserManager _instance; /// <summary> /// Get UserManager instance /// </summary> /// <returns>IUserManager with configuration from the configuration file</returns> public IUserManager Get() { return _instance ?? Get(UserConfigurationSection.GetSection()); } private IUserManager Get(UserConfigurationSection config) { return _instance ?? (_instance = Create(config)); } /// <summary> /// For testing purposes only! /// </summary> /// <param name="userManager"></param> public void Set(IUserManager userManager) { _instance = userManager; } } 

рдлреИрдХреНрдЯреНрд░реА рд╕реНрдкреВрдлрд┐рдВрдЧ

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

рд╕реНрдерд╛рдиреАрдп рдХрд╛рд░рдЦрд╛рдиреЗ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ

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

 public class Calculator { public double Multipy(double a, double b) { var multiplier = new Multiplier(); return multiplier.Execute(a, b); } } public interface IArithmetic { double Execute(double a, double b); } public class Multiplier : IArithmetic { public double Execute(double a, double b) { return a * b; } } 

рд╣рдо рдЧреБрдгрдХ рд╡рд░реНрдЧ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдкрд░реАрдХреНрд╖рдг рд╣реЛрдЧрд╛ред рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 public class Calculator { public double Multipy(double a, double b) { var multiplier = CreateMultiplier(); return multiplier.Execute(a, b); } protected virtual IArithmetic CreateMultiplier() { var multiplier = new Multiplier(); return multiplier; } } public class CalculatorUnderTest : Calculator { protected override IArithmetic CreateMultiplier() { return new FakeMultiplier(); } } public class FakeMultiplier : IArithmetic { public double Execute(double a, double b) { return 5; } } 

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

рд╡реАрдПрд╕ рдУрдУрдкреА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛

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

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

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

рдкрд░реАрдХреНрд╖рдг рдпреЛрдЧреНрдп рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреБрдЫ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рджрд┐рдП рдЧрдП рд╣реИрдВ:


рд╡рд┐рд░рд╛рд╕рдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ

"рд╡рд┐рд░рд╛рд╕рдд" рджреНрд╡рд╛рд░рд╛ рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд┐рдирд╛ рдХреЛрдб рдХрд╛ рдорддрд▓рдм рд╣реИред рдРрд╕реЗ рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╕реБрдЭрд╛рд╡ред

рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкрд░реАрдХреНрд╖рдг рдпреЛрдЧреНрдп рд╣реИ

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

рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкрд░реАрдХреНрд╖рдг рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ

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

рд╕рдорд░реНрдерди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ




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

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


рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рд╕рдордп рдкрд░ рдЙрдирдХреА рдорд░рдореНрдордд рдХрд░реЗрдВ, рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдирд┐рдХрд╛рд▓реЗрдВ, рдмреЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░реЗрдВ рдФрд░ рдЯреЗрд╕реНрдЯ рдПрдкреАрдЖрдИ рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВред рдЖрдк рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдмреЗрд╕ рдЯреЗрд╕реНрдЯ рдХреНрд▓рд╛рд╕реЗрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, CRUD)ред рдпрджрд┐ рдЖрдк рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЬрд▓реНрдж рд╣реА рдЗрд╕рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рд╕рдордп рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛ред

рдкреНрд░рдЧрддрд┐ рдХреЛ рдХреИрд╕реЗ рдорд╛рдкреЗрдВ

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

  1. рдирдП рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдмрдЧреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ (рдкреНрд░рддрд┐рдЧрдорди рд╕рд╣рд┐рдд)
  2. рдХреЛрдб рдХрд╡рд░реЗрдЬ


рдкрд╣рд▓реЗ рдПрдХ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рдпрд╛ рдХреНрдпрд╛ рд╣рдо рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╣рдо рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдЦрд░реНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреВрд╕рд░рд╛, рдХрд┐рддрдирд╛ рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдмрд╛рдХреА рд╣реИред

.NET рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдХреЛрдб рдХрд╡рд░реЗрдЬ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЙрдкрдХрд░рдг рд╣реИрдВ:


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




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

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

рд╡рд┐рд╖рдп рдкрд░ рдкрдврд╝реЗрдВ

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

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


All Articles