рдореИрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд░реВрд╕реА рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SpecFlow рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдПрдХ рдХрджрдо-рджрд░-рдЪрд░рдг рд░реВрд╕реА-рднрд╛рд╖рд╛ рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ SpecFlow рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд░реВрд╕реА рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдЕрдиреНрдп рд╡рд╛рд╣рди рдЪрд╛рд▓рдХреЛрдВ рдХреЗ рдмреАрдЪ рдХреБрдЫ
рд╕рдВрджреЗрд╣ рдерд╛ рдХрд┐ рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рд╕рд░рд▓ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рджреВрд░ рдХреЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдк рдкрд╕рдВрдж рдирд╣реАрдВ рдереЗ (рддрдХрдиреАрдХреА рд╕рд╣рд╛рдпрддрд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╡реЗрдм рд╕реЗ рдкрд░реАрдХреНрд╖рдг рджреЗрдЦрддреЗ рдереЗ)ред рдореБрдЭреЗ SpecFlow рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд░реВрд╕реА рдореЗрдВ рд╣реИ!
рдлрд┐рд░ рднреА, рдореИрдВрдиреЗ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛, рдФрд░ рддрд╛рдХрд┐ рджреВрд╕рд░реЛрдВ рдХреЛ рд╕рдВрджреЗрд╣ рди рд╣реЛ рдХрд┐ рдРрд╕рд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдзрдХреНрдХреЛрдВ рдХреЛ рднрд░рдирд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдЕрдкрдиреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдХреБрдЫ рдРрд╕реЗ рдмрд┐рдВрджреБ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реЛрдВред
рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП
рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬреЛ:
- рд╕реНрд╡рдЪрд╛рд▓рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг (BDD) рджреГрд╖реНрдЯрд┐рдХреЛрдг рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рдЖрдХрд▓рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд░реВрд╕реА рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдФрд░ рдХрд╛рдо рдХреЗ рджрд╛рдпрд░реЗ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ;
- рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдмреАрдбреАрдбреА рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред
рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП
рдмреЗрдХрд╛рд░ рд╣реИ рдЬреЛ:
- рд╡рд╣ рдЦреБрдж рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
- рдХрд╛рдо рдХреЗ рдХрдИ рдШрдВрдЯреЗ рдмрд┐рддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ + рдЦреБрдж рдХреЛ рдирд┐рд░реНрджреЗрд╢ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрдЧреНрд░реЗрдЬреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмреЛрд▓рддрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди
рдореЗрд░рд╛ рдХрд╛рдо рдПрдХ рдЖрд╡реЗрджрди рдХреА рдкреНрд░рдореБрдЦ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ рд░реВрд╕реА рдХрдВрдкрдиреА рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдШрд░реЗрд▓реВ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдкрд░ рд▓рдХреНрд╖рд┐рдд рд╣реИред рдЖрд╡реЗрджрди рдмрд╛рдЬрд╛рд░ рдкрд░ рдПрдХ рд╕рднреНрдп рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рд╕реИрдХрдбрд╝реЛрдВ рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИред рд░рд┐рд▓реАрдЬрд╝ рдЕрдХреНрд╕рд░, рдмрдЧ рд╕реЗ рднрд░рд╛ рд╣реЛрддрд╛ рд╣реИ, рдХреБрдЫ рдкрд░реАрдХреНрд╖рдХред
рдореИрдиреБрдЕрд▓ рдиреЗ рд╕рдмрд╕реЗ рдЖрдзреБрдирд┐рдХ рд╕реНрд╡рдЪрд╛рд▓рди рд░реБрдЭрд╛рдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рд╛рдпрд╛ -
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП , рдкреНрд░рдореБрдЦ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддреЗ рд╣реБрдП, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рди рдХреА рд╕рд░реНрд╡реЛрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ, рдФрд░ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╣рд╛рдиреА рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВред
рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реАрдзреЗ рдлрд╝реАрдЪрд░ рдлрд╛рдЗрд▓реНрд╕ рдореЗрдВ рдкреЗрдВрдЯ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдСрдЯреЛрдЯреЗрд╕реНрдЯреНрд╕ рдкрд░ рдлрд╛рд╕реНрдЯ рдХрд░реЗрдВ!
рдирд┐рд░реНрджреЗрд╢ рдореИрдиреБрдЕрд▓
рдХреНрдпрд╛ рдЬрд░реВрд░рдд рд╣реИ?
- .Net рдХреЗ рд▓рд┐рдП IDE рдирд┐рд░реНрджреЗрд╢ рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖рд╛ рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдиреНрдп рдЖрдИрдбреАрдИ рдореЗрдВ, рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред
- рдЯреЗрд╕реНрдЯ рд░рдирд░ рдЪреБрдиреЗрдВ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдЕрдЧрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд╣реАрдВ рд╣реИред рдореИрдВ NUnit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред SpecFlow рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдг рд░рди рдЯреВрд▓ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ ред
рдЪрд░рдг 1: SpecFlow рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдЯреВрд▓реНрд╕ рдкрд░ рдЬрд╛рдПрдВ - рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреНрд╕ рдФрд░ рдЕрдкрдбреЗрдЯреНрд╕ред
рдСрдирд▓рд╛рдЗрди рдЬрд╛рдУ рдФрд░ SpecFlow рджреЗрдЦреЛред
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдЖрдкрдХреЛ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдЧрд╛ред
рдЪрд░рдг 2: SpecFlow рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ
рдЖрдк рдЗрд╕ рдЪрд░рдг рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐:
- рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ 1 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ, рдФрд░ рдЖрдк рдмрд┐рдирд╛ рдХрд┐рд╕реА рдбреНрд░рд╛рдлреНрдЯ рдФрд░ рдкреНрд░рдпреЛрдЧ рдХреЗ рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░ рдЪрд░рдг 3 рдореЗрдВ рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВред
- рдЖрдк рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рд╕рд▓рд╛рд╣ рд▓реЗрдВрдЧреЗред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдЕрдЧреНрд░рд┐рдо рдореЗрдВ App.config рдлрд╝рд╛рдЗрд▓ рддреИрдпрд╛рд░ рдХрд░реЗрдВ:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow"/> </configSections> <specFlow> <unitTestProvider name="NUnit" /> <language feature="ru-RU" tool="ru-RU" /> <bindingCulture name="ru-RU" /> </specFlow> </configuration>
NUnit рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдпрд╣рд╛рдВ рдПрдХ рдЕрд▓рдЧ рдкрд░реАрдХреНрд╖рдг рдзрд╛рд╡рдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЛ рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдФрд░ рдлреАрдЪрд░ рдлрд╛рдЗрд▓ рд╡рд╛рд▓реЗ рд╕рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреА рдПрдХ рдХреЙрдкреА рдЕрд▓рдЧ рд╕реЗ рд░рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред
рдореИрдВ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдЫреЛрдбрд╝рддрд╛ рд╣реВрдВ - рдЕрдЪрд╛рдирдХ рдореИрдВ рдХреБрдЫ рдФрд░ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ SpecFlow рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдорд┐рдЯрд╛ рджреЗрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП NUnit рдХреЗ рд╕рд╛рде рдЕрдВрдЧреНрд░реЗрдЬреА-рднрд╛рд╖рд╛ рдХреЗ рдЪрд╢реНрдореЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдЪрд░рдг 3: рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВ
рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдЬреИрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреНрд░реА рд╕реЗ, рдорд╛рдирдХ рд╡рд░реНрдЧ рдХреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛рдПрдВ:
рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ рдХрдВрд╕реЛрд▓ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ:
рдЗрд╕рдореЗрдВ, рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
PM> Install-Package SpecFlow.NUnit -ProjectName UnitTestProject1
рдЬрд╣рд╛рдВ:
UnitTestProject1 рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рд╣реИред
SpecFlow.NUnit - NUnit рдХреЗ рд▓рд┐рдП SpecFlow рд╕рдВрд╕реНрдХрд░рдгред рдЖрдк рд╕рд┐рд░реНрдл SpecFlow рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдкрд░реАрдХреНрд╖рдг NUnit рдирд╣реАрдВ рдЪрд▓рд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди SpecRunред
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдБредрдХрдорд╛рдВрдб рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ App.config рдлрд╝рд╛рдЗрд▓ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рдпрд╣ рд╕рдорд╛рдзрд╛рди рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдХреЗ рд╕рд╛рде рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ 2 рддрд░реАрдХреЗ рд╣реИрдВ:
1. рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдЦреЛрд▓реЗрдВ рдФрд░ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдмрджрд▓реЗрдВред
2. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреНрд░реА рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ:
рдЕрдм рдЖрдк рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╣реА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рд╣рд░ рдмрд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж, SpecFlow рдЕрдкрдиреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд╛рдВрдЧреЗрдЧрд╛ред
рдЪрд░рдг 4: рдПрдХ рдлрд╝реАрдЪрд░ рд╡рд┐рд╡рд░рдг рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рдирд╛
SpecFlow рд╕реБрд╡рд┐рдзрд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдПрдХ рдирдореВрдирд╛ рд╣реЛрдЧрд╛ред рдЪреВрдБрдХрд┐ рд╣рдо SpecFlow рдХреЛ рд░реВрд╕реА рдореЗрдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреА - рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрдм "рджрд┐рдП рдЧрдП / рдЬрдм / рддрдм" рдирд╣реАрдВ рдкрд╣рдЪрд╛рдиреЗрдЧрд╛:
рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд╣реА рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣
рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд▓рд┐рдЦрд╛
рдЧрдпрд╛ рд╣реИ ред
рд╣рдо рд░реВрд╕реА рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ (рдЖрдк рдпрд╣рд╛рдВ рд╕реЗ рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ):
: @ : Login
рд╡рд░реНрдгрди рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреМрди рд╕реЗ рд╡рд┐рд╢реЗрд╖ рдХреАрд╡рд░реНрдб рдЕрдВрдЧреНрд░реЗрдЬреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд░рдЦреЗ рдЧрдП рд╣реИрдВ:
<Language code="ru" cultureInfo="ru" defaultSpecificCulture="ru-RU" englishName="Russian"> <Feature></Feature> <Feature></Feature> <Feature></Feature> <Background></Background> <Background></Background> <Scenario></Scenario> <ScenarioOutline> </ScenarioOutline> <Examples></Examples> <Given></Given> <Given></Given> <Given></Given> <When></When> <When></When> <Then></Then> <Then></Then> <And></And> <And> </And> <But></But> <But></But> </Language>
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд░реВрд╕реА рдореЗрдВ "рдЧреЗрд░рдХрд┐рди," рджрд┐рдпрд╛ / рдХрдм / рддрдм "рдлреЙрд░реНрдореВрд▓рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ" рдЕрдЧрд░ / рдЬрдм / рдлрд┐рд░ ", рддреЛ рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐" рдЕрдЧрд░ "SpecFlow рдореЗрдВ" рдХрдм "рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдФрд░ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдХрд╛рдлреА рдвреВрдВрдврддрд╛ рд╣реВрдВ рддрд╛рд░реНрдХрд┐рдХред рдЗрд╕реЗ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдЗрдлрд╝" = "рджрд┐рдпрд╛ рдЧрдпрд╛" рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╕рдордп рднреНрд░рдо рдФрд░ рднреНрд░рдо рдкреИрджрд╛ рдХрд░рддреЗ рд╣реИрдВредрдЕрдм рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рдлрд▓ рд╣реИ рдФрд░ рд░реВрд╕реА рдХреАрд╡рд░реНрдб рдкрд╣рдЪрд╛рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВ:
рдЪрд░рдг 5: рдЯреЗрд╕реНрдЯ рд╕реНрдЯреЗрдкреНрд╕ рдмрдирд╛рдирд╛
рдлрд╝реАрдЪрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реА, рд╕рдВрджрд░реНрдн рдореЗрдиреВ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЪрд░рдг рдЬрдирд░реЗрдЯрд░ рдЪрд▓рд╛рдПрдБ:
рдЖрдк рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рднреА "рджрд┐рдП рдЧрдП", "рдФрд░", "рдЬрдм", "рдлрд┐рд░" рд╣реИрдВ:
рдЙрддреНрдкрдиреНрди - рдЪрд░рдгреЛрдВ рдХрд╛ рд╕реГрдЬрдиред
рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдпрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдкрд░реАрдХреНрд╖рдг рдЪрд░рдгреЛрдВ рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдирд╛рдо рд╕реЗ рдлреАрдЪрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд╛рдо рджреЗрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдирддреАрдЬрддрди, рд╣рдордиреЗ рдСрдЯреЛрдЯреЗрд╕реНрдЯ рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕реНрдЯрдмреНрд╕ рдХреЗ рд╕рд╛рде рдХрджрдо рдЙрдард╛рдП:
рдЪрд░рдг 6: рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдБ
рдЕрдм, рдСрдЯреЛрдЯреЗрд╕реНрдЯ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рд╕реЗ рд╕рдмрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЕрдкреВрд░реНрдг рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ:
рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ, рдЕрд╕рдлрд▓ рдкрд░реАрдХреНрд╖рдг рдЙрд╕реА рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдПрдХ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рд╣реИрдВред NUnit рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реИред
рдпрджрд┐ рдХреБрдЫ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдСрдЯреЛрдЯреЗрд╕реНрдЯ рднрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ, NUnit рддрдп рдХрд░реЗрдЧрд╛ рдХрд┐ рд╡рд╣рд╛рдБ рдХреЛрдИ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд╣реИрдВред
рд╢рдВрдХреБ
рдореИрдВрдиреЗ App.Config рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЦреЛрдЬрд╢рдмреНрджреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдореИрдВрдиреЗ рд╡рд╣рд╛рдБ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓рд┐рдЦрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдпрд╛:
Result Message: TestFixtureSetUp failed in < >
рдпрджрд┐ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЖрдк рдЕрднреА рднреА "рд▓рд╛рд▓" рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдЖрддреЗ рд╣реИрдВ - рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВ, рдпрд╣ рдЕрдиреБрднрд╡ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдСрдЯреЛрдЯреЗрд╕реНрдЯ рдХреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдЬрдХрдбрд╝рдирд╛ рдФрд░ рдлреАрдЪрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреА рд╕реАрдорд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд░реВрд╕реА рдореЗрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд░реЗрдВ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ
рдорд╛рд░реНрд╢рд┐рдиреЛрд╡ рдмрддрд╛рддреЗ рд╣реИрдВред рдЙрдирдХреЗ рд▓реЗрдЦ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдлреАрдЪрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рд╛рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдЗрд╕реЗ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕реНрд░реЛрдд:
www.specflow.org/specflownew/ProjectSetupGuide.htmlgo.specflow.org/doc-configgithub.com/techtalk/SpecFlow/wiki/Configurationraw.github.com/techtalk/SpecFlow/master/Languages.xmlmsdn.microsoft.com