Nunit: рдЙрджрд╛рд╣рд░рдг-рдкреНрд░рддрд┐-рдкрд░реАрдХреНрд╖рдг-рдорд╛рдорд▓рд╛ рд╕реБрд╡рд┐рдзрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 24 рдирд╡ре░ 2017  ┬╖  112рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: nunit/nunit

рд╣рд░ рдХрд┐рд╕реА рдХрд╛ рдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрдм рдПрдХ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рднреАрддрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рд╣реЛрддрд╛ рд╣реИ (https://github.com/nunit/nunit/issues/2105, https://github.com/nunit/nunit/issues /2252, https://github.com/nunit/nunit/issues/2573) рднрд▓реЗ рд╣реА рдРрд╕рд╛ рдХрднреА рдирд╣реАрдВ рд╣реБрдЖ рд╣реЛред рдореИрдВ рд╣рдореЗрд╢рд╛ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рдПрдХ рдбрд┐рд╕реНрдкреЛрдЬреЗрдмрд▓ рдиреЗрд╕реНрдЯреЗрдб рдлрд┐рдХреНрд╕реНрдЪрд░ рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдХреБрдЫ рддрд░реАрдХреЛрдВ рд╕реЗ рдПрдХ рд╕рдореГрджреНрдз рдЕрдиреБрднрд╡ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ( рдЙрджрд╛рд╣рд░рдг ), рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╣рдо рд╕рднреА рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдереЛрдбрд╝рд╛ рд╕рд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ рд╣реИ, рдХрд┐ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рд╡рд╣ рд╣реИ рдЬрд┐рд╕реЗ NUnit рд╕реНрдерд┐рд░рддрд╛ рдорд╛рдирддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рд░рддрд╛ рдиреЗрд╕реНрдЯреЗрдб рд╡рд░реНрдЧ рд╣реИред

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

рдореБрдЭреЗ рдЪрд╛рд░реНрд▓реА рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд╕рдВрдж рд╣реИ:

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

рд╕рдВрднрд╛рд╡рд┐рдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди:

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

рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдкрд╣рд▓реЗ рдореВрд▓ рдмрд╛рддреЗрдВ рдХрд░реЗрдВред

рдЕрднреА рдпрд╣ рдПрдХ рдмрдЧ рд╣реЛрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИ рдпрджрд┐ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЙрджрд╛рд╣рд░рдг рд╕реНрдерд┐рддрд┐ рд╣реИ рдФрд░ рдПрдХ рд╕реНрдерд┐рд░рддрд╛ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдЪрд▓рддреА рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдСрдЯреЛ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЙрджрд╛рд╣рд░рдг-рдкреНрд░рддрд┐-рдкрд░реАрдХреНрд╖рдг-рдорд╛рдорд▓реЗ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рд╕реНрдерд┐рд░рддрд╛ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдмрдЪреЗрдВ ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдСрдЯреЛ рдореЗрдВ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдмрд╕реЗ рд╕рдордЭрджрд╛рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рд░ рдХреЛрдИ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ [assembly: InstancePerTestCase] рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХреЗред

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

done feature normal docs releasenotes

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХрд┐рд╕реА рднреА рдореМрдХреЗ рдкрд░ рд╣рдо рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд░реАрдм рдЖ рд░рд╣реЗ рдереЗ

рд╕рднреА 112 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

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

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

рдореИрдВ @CharliePoole рдХреЗ рд╕рд╛рде рд╣реВрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЛ рд╡реИрд╕реЗ рд╣реА рд░рд╣рдирд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЕрдиреНрдпрдерд╛ рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

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

@BlythMeister рдЪрд┐рдВрддрд╛ рдордд рдХрд░реЛ! рд╣рдо рдРрд╕реЗ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рд╕реЗ рдореМрдЬреВрджрд╛ рдХреЛрдб рдЯреВрдЯрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПред

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

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

XP рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ (рдФрд░ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рдореЗрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ) рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреАрди рдХрд╣рд╛рдирд┐рдпрд╛рдВ рд╣реИрдВ, рдЬреЛ рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ ...

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

  2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдлрд┐рдХреНрд╕реНрдЪрд░ рдкрд░ рдЙрджрд╛рд╣рд░рдг-рдкреНрд░рддрд┐-рдкрд░реАрдХреНрд╖рдг-рдорд╛рдорд▓рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

  3. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд┐рдХреНрд╕реНрдЪрд░ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг-рдкреНрд░рддрд┐-рдкрд░реАрдХреНрд╖рдг-рдорд╛рдорд▓рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рддрдм рд╕рд╣рдордд рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдореЗрд░реА рдХреБрдЫ NUnit рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рджреВрд╕рд░реЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдФрд░ рд╕рдВрднрд╡рддрдГ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред

рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рд╕реБрдВрджрд░рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рдзрд╛рд╡рдХ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

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

рдмрд╕ рдЙрддреНрд╕реБрдХ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╕рдиреНрди рдпреЛрдЬрдирд╛ рд╣реИ?

@rprouse рдЗрд╕реЗ рдЕрднреА рднреА рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдм рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рд╣реИред

@CharliePoole рдиреЗ рд╕рд╣рдорддрд┐ рд╡реНрдпрдХреНрдд рдХреА рдХрд┐ рдпрд╣ рдбрд┐рдЬрд╛рдЗрди рд╕реЗ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИред @pfluegs рд╣рдордиреЗ рдЗрд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрднреА рддрдХ рдХреЛрдИ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИред

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ рдЗрд╕ рдкрд░ рдЗрддрдирд╛ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪрд░реНрдЪрд╛ рдпрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рд▓реЗрдмрд▓ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рд╕реНрд╡рдпрдВрд╕реЗрд╡рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ

рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдмреБрд░реА рддрд░рд╣ рдХрд╛рдЯрд╛ рдЧрдпрд╛ рд╣реИ - рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП +1ред

рдпрджрд┐ рд╣рдо рдХрднреА рдФрд░ рд╡рд┐рдХрд▓реНрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рд╣рдо рдЪрд╛рд╣реЗрдВрдЧреЗ:

```рд╕реА#
[рдЕрд╕реЗрдВрдмрд▓реА: рдлрд┐рдХреНрд╕рдЪрд░ рдХреНрд░рд┐рдПрд╢рди (рдлрд┐рдХреНрдЪрд░ рдХреНрд░рд┐рдПрд╢рдирдСрдкреНрд╢рдиред рдкрд░рдЯреЗрд╕реНрдЯрдХреЗрд╕)]

And:
```diff
namespace NUnit.Framework
{
+   public enum FixtureCreationOptions
+   {
+       Singleton, // = default
+       PerTestCase
+   }
}

рдХрдо рд╕реЗ рдХрдо рдПрдХ рдирдП рдврд╛рдВрдЪреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдЗрд╕ рдкрд░ рдореЗрд░реА рдЕрдкрдиреА рд╕реЛрдЪ рдереЛрдбрд╝реА рдмрджрд▓ рдЧрдИ рд╣реИред

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

@CharliePoole [TestFixture(FixtureOptions.PerTestCase)] рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдПрдХ рдЕрд╕реЗрдВрдмрд▓реА-рд╕реНрддрд░реАрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рднреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдСрдкреНрдЯ рдЗрди рдХрд░ рд╕рдХреВрдВред рд╣рдо рдЕрд╕реЗрдВрдмрд▓реА-рд╕реНрддрд░реАрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдХреИрд╕рд╛ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ?

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

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

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

@ nunit/рдврд╛рдВрдЪрд╛-рдЯреАрдо рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ? рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд░рд┐рдЪрдп рдХреЗ рд▓рд┐рдП:

  • рдЕрд╕реЗрдВрдмрд▓реА-рд╕реНрддрд░реАрдп рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣рд╛рдВ/рдирд╣реАрдВ?
  • рд╕реНрдерд┐рд░рддрд╛-рд╕реНрддрд░ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣рд╛рдБ/рдирд╣реАрдВ?
  • рд╡рд┐рдзрд┐-рд╕реНрддрд░ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣рд╛рдБ/рдирд╣реАрдВ?
  • рдЯреЗрд╕реНрдЯ-рдХреЗрд╕-рд▓реЗрд╡рд▓ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣рд╛рдВ/рдирд╣реАрдВ?

рд╡рд┐рд╢реЗрд╖рддрд╛рд╣реАрди рд╕реНрдерд┐рд░рддрд╛ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЪреНрдЫреА рдмрд╛рддред

рдореИрдВ рдХрд╣реВрдБрдЧрд╛ рд╣рд╛рдБ, рд╣рд╛рдБ, рдирд╣реАрдВ, рдирд╣реАрдВ

рдореИрдВ рдЪрд╛рд░реНрд▓реА рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ - рдЗрд╕ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд┐ 'рд╕реНрдерд┐рд░рддрд╛-рд╕реНрддрд░' рдХрд╛ рдЕрд░реНрде 'рд╡рд░реНрдЧ-рд╕реНрддрд░' рд╣реИред (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗрд╕ рд╕реНрд░реЛрдд рд╡рд┐рдзрд┐ рдХреЗ рд╡рд┐рдкрд░реАрддред )

рдпрд╣ рд╕рд╣рд╛рдпрддрд╛ рдХрд░рддрд╛ рд╣реИ! рддреЛ [TestFixture(FixtureCreationOptions.PerTestCase)] рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рд╣реА рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ TestFixture рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ рдФрд░ рдлрд┐рд░ рд╡реЗ рдПрдХ-рджреВрд╕рд░реЗ рдХрд╛ рдЦрдВрдбрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдирдИ рдирд╛рдорд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдФрд░ рд╕рд░рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

```рд╕реА#
[рдЕрд╕реЗрдВрдмрд▓реА: ShareFixtureInstances(false)]

[рд╢реЗрдпрд░рдлрд┐рдХреНрдЪрд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ (рдЭреВрдард╛)]
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ рдХреБрдЫ рд╕реНрдерд┐рд░рддрд╛
{
//...
}

Framework API:

```diff
namespace NUnit.Framework
{
+   [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class)]
+   public sealed class ShareFixtureInstancesAttribute : PropertyAttribute
+   {
+       public bool ShareFixtureInstances { get; }

+       public ShareFixtureInstancesAttribute(bool shareFixtureInstances);
+   }
}

рдмрдврд╝рд┐рдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рд╡рд┐рд░рд╛рд╕рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ - рдпрджрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдкрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЙрд╕ рд╡рд░реНрдЧ рд╕реЗ рднреА рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ? рдореИрдВ

рд╕рдВрднрд╡рддрдГ, рдЪреВрдВрдХрд┐ рдпрд╣ рдПрдХ 'рд╡рд░реНрдЧ' рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ - рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд░реНрдЧ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдкреНрд░рд╢реНрди рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ?

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

рдХреИрд╕реЗ InstancePerTest рдХреА рддрд░реНрдЬ рдкрд░ рдХреБрдЫ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ...рд▓реЗрдХрд┐рди рдмреЗрд╣рддрд░ рдирд╛рдо...

рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдФрд░ рдХрдХреНрд╖рд╛ рд╕реНрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╣рдордд рд▓реЗрдХрд┐рди рдЧрд╣рд░рд╛ рдирд╣реАрдВред рдореИрдВ @ChrisMaddock рдХреЗ рд╕реБрдЭрд╛рд╡ ClassInstancePerTest(bool) рдХреА рддрд░реНрдЬ рдкрд░ рднреА рдХреБрдЫ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рдпрд╣ рднреА рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдХрдХреНрд╖рд╛ рд╕реНрддрд░ рдкрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЕрд╕реЗрдВрдмрд▓реА рд╕реНрддрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рджреЗрдЧреА рдФрд░ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд╣реЛрдЧреАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд░рд╛рд╕рдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЖрдо рддреМрд░ рдкрд░ рд╕рдорд╛рдирддрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рддрд┐ рдкрд░реАрдХреНрд╖рдг рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛред

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

рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рдмрд╛рджред рдореИрдВ, @ jnm2 рдХреА рддрд░рд╣, рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╣реВрдВ ред рд▓реЗрдХрд┐рди рдЬрдм рдкрд░реАрдХреНрд╖рдг рдЬреИрд╕реЗ рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛, рдХреЗрд╕ рд░рдирд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреЛрдЭрд┐рд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ: рдЙрдиреНрд╣реЗрдВ рдЖрдИрдбреАрд╕реНрдкреЛрдЬреЗрдмрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП; рдЕрдм рдЖрдкрдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬрд╛рджреБрдИ [TearDown] рдирд╣реАрдВ рд╣реИред :( рдордЪрд╛рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдмрддрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рд╕реБрд╕рдВрдЧрдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджрд░реНрджрдирд╛рдХ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред

рдЕрдЧрд░ рдореИрдВ рдбрд┐рдЬрд╛рдЗрди рдкрд░ рд░реЛрдХ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ

рдирд╛рдо PerTestInstance , InstancePerTest рдпрд╛ рдХреБрдЫ рд╣реИ рдХрд┐ рд▓рдЧрддрд╛ рд╣реИ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдмрд╣реБрдд рд╕реЗ рдмреЗрд╣рддрд░ ShareFixtureInstances ред рдореИрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдирд╛рдо рдкрд░ Class рд╢рдмреНрдж рдХреЛ рд╣рд▓реНрдХреЗ рдврдВрдЧ рд╕реЗ рдирд╛рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдореИрдВ рдПрдл # рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЯрд╛рдЗрдк рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреНрд▓рд╛рд╕ рд╣реИрдВ ред рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рдмрд╛рдд рдореИрдВ рдЙрд╕рдХреЗ рд╕рд╛рде рд░рд╣ рд╕рдХрддрд╛ рд╣реВрдБ! :)

рдУрд╣ рдмреЙрдп, рдЗрд╕ рдлреАрдЪрд░ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛!

@ kkm000 рдореИрдВ "рд╡рд░реНрдЧ" рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╣рдордд рд╣реВрдВред NUnit рдиреЗ рдЖрдорддреМрд░ рдкрд░ рдРрд╕реЗ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВред рдлрд┐рд░ рднреА, рд▓реЛрдЧ рдзрд╛рд░рдгрд╛рдПрдБ рдмрдирд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕реА рдЪреАрдЬрд╝реЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдмрдиреЗ рд░рд╣рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рдореИрдВ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЙрд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг: рдЯреЗрд╕реНрдЯ, рдЯреЗрд╕реНрдЯрдлрд┐рдХреНрдЪрд░, рд╕реЗрдЯрдЕрдкрдлрд┐рдХреНрдЪрд░, рд╡рд░реНрдХрд░ (рдереНрд░реЗрдб рдирд╣реАрдВ), рдЖрджрд┐ред рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рдореЗрдВ, рдПрдХ рд╡рд░реНрдЧ __ рдПрдХ рдПрдХрд▓ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рди рдХрд┐ рдПрдХ рд╕реНрдерд┐рд░рддрд╛ ... рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди __рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ__ред

@kkm000

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

[InstancePerTestCase] рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╣рдЬ рд╕реНрдкрд╖реНрдЯрддрд╛ рдЦреЛ рд╕рдХрддрд╛ рд╣реИред

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

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

```рд╕реА#
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рд╡рд░реНрдЧ SomeTestSuite // рдХреЛрдИ рд╕реНрдерд┐рд░рддрд╛ рдирд╣реАрдВ: рдХреЛрдИ рд╕реЗрдЯрдЕрдк / рдЯрд┐рдпрд░рдбрд╛рдЙрди рддрд░реНрдХ рдирд╣реАрдВ рдФрд░ рдХреЛрдИ рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ
{
[рдЯреЗрд╕реНрдЯ] // рд╕рд┐рдВрдЧрд▓ рдЯреЗрд╕реНрдЯ, рдкреИрд░рд╛рдореАрдЯрд░рд╛рдЗрдЬреНрдб рд╕реВрдЯ рдирд╣реАрдВ;
// рд╕реНрдерд┐рд░рддрд╛ рдХреЛ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдирд┐рд╣рд┐рдд рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рд╢реВрдиреНрдп рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг (рдХреБрдЫ рд╕реНрдерд┐рд░рддрд╛ рд╕реНрдерд┐рд░рддрд╛)
{
рд╕реНрдерд┐рд░рддрд╛ред рдХреБрдЫ рд╕реЗрд╡рд╛ред рдХреБрдЫ рд╕рдВрдкрддреНрддрд┐ = рд╕рдЪ;
рд╕реНрдерд┐рд░рддрд╛ред рдХреБрдЫ рдПрдХреНрд╢рди ();
рд╕реНрдерд┐рд░рддрд╛ред рдЬреЛрд░ рдХреБрдЫ ();
}
}

[рдЯреЗрд╕реНрдЯрдлрд┐рдХреНрдЪрд░]
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрд░рдЪрдирд╛ SomeFixture : IDISposable
{
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдЫ рд╕реЗрд╡рд╛ рдХреБрдЫ рд╕реЗрд╡рд╛ {рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ; } // рд░рд╛рдЬреНрдп

public SomeFixture() // This was almost legal syntax in C# 6, but I'm making a point ЁЯШБ
{
    // Setup
}

public void Dispose()
{
    // Teardown
}

public void SomeAction()
{
    // Helper method
}

public void AssertSomething()
{
    // Helper method
}

}
```

рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, [FixtureInstancePerTestCase] рдпрд╛ [SharedFixtureInstances(false)] рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдкрджрд╛рдиреБрдХреНрд░рдо (рд╕реВрдЯ) рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рд╣реИ: рдпрд╣ рдлрд┐рдХреНрд╕реНрдЪрд░ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ, рдФрд░ рдлрд┐рдХреНрд╕реНрдЪрд░ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рд╕реЗрдЯрдЕрдк/рдЯрд┐рдпрд░рдбрд╛рдЙрди рддрд░реНрдХ рдФрд░ рд╕реНрдерд┐рддрд┐ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ SomeFixture рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдХреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╡рд╣реА рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЪреВрдВрдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдЧреА рдХрд┐ рдХреНрдпрд╛ рд╡рд┐рднрд┐рдиреНрди ITests ITest.Fixture рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬрд╝ рд╡рд╣ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо [TestFixture] (рдирд╛рдо рдореЗрдВ Fixture рд╕рд╛рде рдПрдХ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛) рд╕реЗ рд╕рдЬрд╛рддреЗ рд╣реИрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рд╕реНрдерд┐рд░рддрд╛ рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _consistent_ рд╡рд┐рдХрд▓реНрдкред

(рдореИрдВ рдРрд╕реЗ рдмрд┐рдВрджреБ рд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд╛рдо рдХреЗ рдЕрдВрдд рдореЗрдВ рдореИрдВ рд╕реБрдкрд░ рдирд┐рд╡реЗрд╢рд┐рдд рдирд╣реАрдВ рд╣реВрдВред)

@ рдЬреЗрдПрдирдПрдо 2 рдЖрдк рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реИрдВ рдХрд┐ рдПрдХ рд╕реВрдЯ рдФрд░ рдПрдХ рд╕реНрдерд┐рд░рддрд╛ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, NUnit рдиреЗ рдЙрди рд╕рднреА xunit рдкрд░реАрдХреНрд╖рдг рдврд╛рдБрдЪреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд┐рдпрд╛, рдЬреЛ рдЙрд╕ рд╕рдордп рдореМрдЬреВрдж рдереЗ рдЬрдм рдЗрд╕реЗ рджреЛрдиреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╕реНрдерд┐рд░рддрд╛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдореЗрдВ рдЕрдиреНрдп рдврд╛рдВрдЪреЗ рд╕реЗ рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛ рдЧрдпрд╛ред

рдореЗрд░реЗ рдЬреНрдЮрд╛рди рдХреЗ рд▓рд┐рдП, xunit.net рдкрд░реАрдХреНрд╖рдг рд╡рд┐рд░рд╛рд╕рдд рдкрджрд╛рдиреБрдХреНрд░рдо рд╕реЗ рд╕реНрдерд┐рд░рддрд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдЗрдХрд╛рдИ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ (рдХреЗрд╡рд▓?) рдврд╛рдВрдЪрд╛ рдерд╛ред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдХрднреА-рдХрднреА (рд╕рдорд╛рдирддрд╛ рд╕реЗ рдкрд╣рд▓реЗ) рдЙрджрд╛рд╣рд░рдг-рдкреНрд░рддрд┐-рдорд╛рдорд▓реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЕрдиреНрдп рдврд╛рдВрдЪреЗ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕реА рдХрд╛рд░рдг рд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд┐рдХреНрд╕реНрдЪрд░ рдХреЗ рд▓рд┐рдП __did__ рдирд╣реАрдВ рдкреВрдЫрд╛ред

рддреЛ, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣рд╛рдБ рдореИрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддрд╛ рд╣реВрдБ ...

  1. рд╣рдореЗрдВ рдкреНрд░рддрд┐ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

  2. рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред

  3. рдПрдХ рдЕрд▓рдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕реНрдерд┐рд░рддрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИред

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

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

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

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

рдЖрд╣! рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдЖрдкрдиреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рдмрд┐рдВрджреБ рдкрд░ рдкреНрд░рд╣рд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдорддреМрд░ рдкрд░ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рднреА рдбрд░ рдерд╛ рдХрд┐ рд╣рдо рдкреАрдЫреЗ рд╣рдЯ рд░рд╣реЗ рд╣реИрдВред : рдереЛрдбрд╝рд╛_рднреНрд░рдо_рдЪреЗрд╣рд░рд╛:

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

рд╣рд╛рдБ, рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБред

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

рдЖрдЗрдП рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рд╣рдо рд╡рд╣рд╛рдВ рд╕реЗ рдЯреНрд╡реАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдХреБрдЫ рдРрд╕рд╛ рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд, NUnit рдХреА рд╢реИрд▓реА рдХреЗ рд╕рд╛рде рдПрдХрд░реВрдкрддрд╛, рдФрд░ рд▓рдЪреАрд▓реЗрдкрди рдХреА рд╕рд╣реА рдорд╛рддреНрд░рд╛ рдХреЛ рд╕рдВрддреБрд▓рд┐рдд рдХрд░реЗред (рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП, рдпреЗ рдЪреАрдЬреЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдУрд╡рд░рд▓реИрдк рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред )


рдкреНрд░рд╕реНрддрд╛рд╡ рдП

```рд╕реА#
[рд╡рд┐рдзрд╛рдирд╕рднрд╛: рд╕реНрдерд┐рд░рддрд╛ рд╡рд┐рдХрд▓реНрдк (InstancePerTestCase = true)]

[FixtureOptions(InstancePerTestCase = false)]
рдХрдХреНрд╖рд╛ рдХреБрдЫ рд╕реНрдерд┐рд░рддрд╛
{
}

Pro: extending later if there's ever more options for fixture handling (doubtful?)
Pro: two names so there's less stuffed into a single name
Con: `[FixtureOptions]` would be legal but highly misunderstandable syntax. (Does it reset the assembly-wide setting to the default, `false`, or does it have no effect, e.g. `null`?)


### Proposal B

```c#
[assembly: FixtureOptions(FixtureCreationOptions.PerTestCase)]

[FixtureOptions(FixtureCreationOptions.Singleton)]
class SomeFixture
{
}

public enum FixtureCreationOptions
{
    Singleton, // = default
    PerTestCase,
    // Doubtful there will be other options?
    // Maybe Pool, where we reset and reuse between nonconcurrent tests?    
}

рдкреНрд░реЛ: рдЕрдорд╛рдиреНрдп рд░рд╛рдЬреНрдп рдЕрдкреНрд░рддрд┐рд╖реНрдард┐рдд рд╣реИрдВ
рдкреНрд░реЛ: рдмрд╛рдж рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдпрджрд┐ рд╕реНрдерд┐рд░рддрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ (рд╕рдВрджрд┐рдЧреНрдз?)
рдХреЙрди: рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рдФрд░ рдПрдирдо рдирд╛рдо рджреЛрдиреЛрдВ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдореЗрдВ рдЕрддрд┐рд░реЗрдХ

рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реА

```рд╕реА#
[рдЕрд╕реЗрдВрдмрд▓реА: рдлрд┐рдХреНрд╕рдЪрд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕рдкреЗрд░рдЯреЗрд╕реНрдЯрдХреЗрд╕]

[FixtureInstancePerTestCase(false)]
рдХрдХреНрд╖рд╛ рдХреБрдЫ рд╕реНрдерд┐рд░рддрд╛
{
}
```

рдкреНрд░реЛ: рдЕрдорд╛рдиреНрдп рд░рд╛рдЬреНрдп рдЕрдкреНрд░рддрд┐рд╖реНрдард┐рдд рд╣реИрдВ
рдкреНрд░реЛ: рдЧрд▓рдд рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ (рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣рд╛рдВ рдПрдХ рдЕрдВрдзрд╛ рд╕реНрдерд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдПрдХ рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╣реАрдВ рд╣реВрдВ)
рд╕рд╛рде: рд▓рдВрдмрд╛ рдирд╛рдо
рд╢рд╛рдпрдж рдХреЙрди: рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдо рдЬреЛ рд╡рд┐рдХрд▓реНрдк рдФрд░ рдореВрд▓реНрдп рджреЛрдиреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред (рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ [NonParallelizable] рдЬреЛ рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИред)


(рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!)

рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рдПрдХ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХ рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдПред

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

рдЕрдкрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг:

```рд╕реА#
[рдЕрд╕реЗрдВрдмрд▓реА: DefaultFixtureOptions (InstancePerTestCase = true)]

[FixtureOptions(InstancePerTestCase = false)]
рдХрдХреНрд╖рд╛ рдХреБрдЫ рд╕реНрдерд┐рд░рддрд╛
{
}

[рд╡рд┐рдзрд╛рдирд╕рднрд╛: DefaultFixtureOptions(FixtureCreationOptions.PerTestCase)]

[FixtureOptions(FixtureCreationOptions.Singleton)]
рдХрдХреНрд╖рд╛ рдХреБрдЫ рд╕реНрдерд┐рд░рддрд╛
{
}

[рд╡рд┐рдзрд╛рдирд╕рднрд╛: DefaultFixtureInstancePerTestCase]

[FixtureInstancePerTestCase(false)]
рдХрдХреНрд╖рд╛ рдХреБрдЫ рд╕реНрдерд┐рд░рддрд╛
{
}
```

рдЕрдиреНрдп рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ:

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

рдмреАрдЯреАрдбрдмреНрд▓реВ, рдореИрдВрдиреЗ рдЕрдХреНрд╕рд░ рдХрд╛рдордирд╛ рдХреА рд╣реИ рдХрд┐ рд╣рдо рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рд╕реНрдерд┐рд░рддрд╛ рд╕реНрддрд░реЛрдВ рдХреЗ рд▓рд┐рдП DefaultTestCaseTimeOut рдХреЗ рд╕рд╛рде рдЧрдП рдереЗ рдФрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рдХреЗрд╡рд▓ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд░рдЦрд╛ рдерд╛ред

рдЕрдЪреНрдЫрд╛, рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рд╕рд╛рдордиреЗ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдЕрднреА рдореБрдЭреЗ рдХреБрдЫ рдкрд░реЗрд╢рд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╣рдо рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ:

c# [DefaultFixtureOptions(InstancePerTestCase = true)] class SomeFixture { [FixtureOptions(InstancePerTestCase = false)] public void SomeTest() { } }

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

рдпрд╛:

```рд╕реА#
[рдЕрд╕реЗрдВрдмрд▓реА: DefaultFixtureOptions (InstancePerTestCase = true)]

// рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?
[DefaultFixtureOptions(InstancePerTestCase = true)]
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рд╛рд░ рд╡рд░реНрдЧ рдмреЗрд╕рдлрд┐рдХреНрдЪрд░
{
}

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдореБрд╣рд░рдмрдВрдж рд╡рд░реНрдЧ рдХреБрдЫ рд╕реНрдерд┐рд░рддрд╛: рдмреЗрд╕рдлрд┐рдХреНрдЪрд░
{
}
```

Default рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдФрд░ рдХрдм рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдЖрддреЗ рд╣реИрдВ?

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

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

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

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

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

рдбрдмреНрд▓реВрдЖрд░рдЯреА рд╕реЗрдЯрдЕрдк рдлрд┐рдХреНрд╕реНрдЪрд░, рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рддрддреНрдХрд╛рд▓ рд╡рд┐рдХрд▓реНрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред SetUpFixtures TestFixtures рдирд╣реАрдВ рд╣реИрдВред

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

рдУрд╣ рдорд╛рдп, рдореБрдЭреЗ рдмреЗрд╕ рдХреНрд▓рд╛рд╕' рдпрд╛ рдмреЗрд╕ рдореЗрдердб рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП [Apartment] рдпрд╛ [Parallelizable] рдЙрдореНрдореАрдж рд╣реЛрдЧреА!

рдпрд╣ рд╕рдм рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдХреНрдпрд╛ рд╣рдо FixtureCreationOptions рдЬреИрд╕реЗ рдПрдирдо рдХреЛ рдЪрд╛рд╣рдиреЗ рд╕реЗ рдЗрдВрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? PerTestCase , PerFixture , рдХрд╛рд▓реНрдкрдирд┐рдХ ReusedPerTestCase ?

рдореИрдВ рдХреА рд╕рд╛рджрдЧреА рдХреА рдУрд░ рдЭреБрдХ рд░рд╣рд╛ рд╣реВрдБ:

```рд╕реА#
[рдЕрд╕реЗрдВрдмрд▓реА: DefaultFixtureOptions (InstancePerTestCase = true)]

[FixtureOptions(InstancePerTestCase = false)]
рдХрдХреНрд╖рд╛ рдХреБрдЫ рд╕реНрдерд┐рд░рддрд╛
{
}

Hypothetical other creation options would then be added this way:
```c#
[FixtureOptions(InstancePerTestCase = false, ReuseInstances = true)]

@ nunit/рдврд╛рдВрдЪрд╛-рдЯреАрдо рдЖрдкрдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рдХреНрдпрд╛ рд╣реИрдВ?

рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

[assembly: DefaultFixtureOptions(InstancePerTestCase = true)]

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

рдЕрдм рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ
c# [assembly: DefaultFixtureOptions]
рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЧрдард┐рдд рд╕реА # рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ InstancePerTestCase рдХреЛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред рдпрд╣ рд╢рдмреНрджрд╛рд░реНрде рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реИ?

рдореЗрд░реЗ рд▓рд┐рдП, [assembly: DefaultFixtureInstancePerTestCase] рдЕрдзрд┐рдХ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд▓рдЧрддрд╛ рд╣реИ (рдЗрд╕рдХреЗ sesquipedalian рдирд╛рдо рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд░рд╛рдп рд╣реИ, рд╕реМрдВрджрд░реНрдп рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ)ред рдПрдХ рдЧреБрдг, рдПрдХ рдЧреБрдгред рд╢рд╛рдпрдж рдЗрд╕реЗ рдХрд┐рд╕реА рдкреИрд░рд╛рдореАрдЯрд░ рдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧреБрдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

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

@ kkm000 рдореИрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реИред

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

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

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

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

рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдЕрдВрддрд┐рдо рд╡рд╛рдХреНрдп рдореЗрдВ рдЧрд▓рдд рдмреЛрд▓рд╛ рдерд╛ - рдХреНрдпрд╛ _ "рдЗрд╕ рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рддрддреНрдХрд╛рд▓ рдЯреЗрд╕реНрдЯ рдлрд┐рдХреНрд╕реНрдЪрд░ рдкреНрд░рддрд┐ ~ рд╕реНрдерд┐рд░рддрд╛ ~ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдЬрдм рддрдХ рдЕрдиреНрдпрдерд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рди рд╣реЛред" _ рдЗрд░рд╛рджрд╛? рдпрд╛ рдореИрдВ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рджрд╛рдпрд░реЗ рдФрд░ рдордВрд╢рд╛ рдХреЛ рдЧрд▓рдд рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдБ?

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

рджреЛ рдЕрд▓рдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

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

рдЕрдВрдд рдореЗрдВ, рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдорд╛рдореВрд▓реА рдореБрджреНрджрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдПрдХ рд╣реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рджреГрдврд╝рддрд╛ рд╕реЗ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рдФрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд░рд╣ рд╕рдХрддрд╛ рд╣реВрдВред

@ kkm000 рд╣рд╛рдВ, рдореЗрд░рд╛ рдЗрд░рд╛рджрд╛ "рдкреНрд░рддрд┐ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдмрд╛рд░" рдерд╛ред

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

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

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

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдо рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдирд╛рдо рдореЗрдВ "рдкреНрд░рддрд┐ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рдореИрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЬрд╛ рд╕рдХреВрдВред рдореИрдВ рд╡реИрд╕реЗ рднреА рдЗрд╕ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред :рдореБрд╕реНрдХреБрд░рд╛рдУ:

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдУ, рдЕрдЧрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рдЯреЗрд╕реНрдЯрдХреЗрд╕ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рддреЛ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛!

рдореИрдВ рдПрдХрд▓ [FixtureInstancePerTestCase] рдЦреБрд╢ рд╣реВрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рдХрдо рд╕реЗ рдХрдо рдорд╛рдирд╕рд┐рдХ рдмреЛрдЭ рд▓рдЧрддрд╛ рд╣реИред

@ nunit/framework-team рдХреНрдпрд╛ рдЖрдк https://github.com/nunit/nunit/issues/2574#issuecomment -426347735 рдиреАрдЪреЗ рд╕реЗ рдПрдХ рджрд┐рд╢рд╛ рддрдп рдХрд░рдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

[FixtureInstancePerTestCase] рднреА рдореЗрд░рд╛ рд╕рдмрд╕реЗ рдХрдо рдирд╛рдкрд╕рдВрдж рд╡рд┐рдХрд▓реНрдк рд╣реИред рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдХреА рдХрдореА рд╣реА рдПрдХрдорд╛рддреНрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рд╣реИред

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

рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдПрдирдо рд╡рд┐рдХрд▓реНрдк рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ ... рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рдХрд┐ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рдП!

рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ?

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рднреА рдЕрдкрдбреЗрдЯ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдХреГрдкрдпрд╛ рдХреЛрдИ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ ??
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╕рднреА рдЯреЗрд╕реНрдЯ рдХреЛрдб рдХреЛ рдЗрд╕ рддрд░рд╣ рд▓рдкреЗрдЯрдирд╛ рд╣реЛрдЧрд╛:
csharp [Test] public void TestExample(){ using(var tc = new MyTestContext()){ //code goes here } }
рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдкрд░реАрдХреНрд╖рдг рд╕рдВрджрд░реНрдн рдХреЛ рд╕реЗрдЯ рдЕрдк рдкрд░ рдЖрд░рдВрднреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд╛рдбрд╝рдиреЗ рдкрд░ рдирд┐рдкрдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрднреА рднреА рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

@рдПрдорд╕реАрдЪрд┐рдпрд╛рдХ
рдпрджрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЬрд▓реНрдж рд╣реА рдареАрдХ рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреА, рддреЛ рд╣рдо xUnit рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ xUnit рдореЗрдВ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ: "xUnit.net рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ" https://xunit .github.io/docs/shared-context

@LirazShay, @MChiciak рдореИрдВ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдХрд┐рди @CharliePoole рдХреЗ рдЕрдВрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╣рдордд рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝реАрд▓реНрдб рдмрдирд╛рдП рд╣реИрдВ рдЬреЛ рд╕реЗрдЯрдЕрдк [ThreadStatic] рдкрд░ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@dfal
рдЕрдЪреНрдЫреЗ рдЙрдкрд╛рдп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

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

рдПрдХ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдордиреЗ рдЯреЗрд╕реНрдЯрдлрд┐рдХреНрдЪрд░ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред рдпрд╣ рдХреНрдпрд╛ рддреЛрдбрд╝ рджреЗрдЧрд╛?

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

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

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

рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рдЪрд╛рд░-рдкреНрд░рдпреЛрдЧ рдХреЛ рдпрд╣ рд╕реЛрдЪрдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдкрд╛рдпрд╛ рдХрд┐ рдлрд┐рдХреНрд╕реНрдЪрд░ рдХреЗ рдкреНрд░рддрд┐-рдЯреЗрд╕реНрдЯ-рдХреЗрд╕ рдЗрдВрд╕реНрдЯреЗрдВрдЯреЗрд╢рди рдХреЛ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред NUnit 3 рдореЗрдВ рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдирдИ рдЧреИрд░-рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реБрд╡рд┐рдзрд╛ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред NUnit 4 рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдирдП рдврд╛рдВрдЪреЗ (рдЬреИрд╕реЗ рдЯреЗрд╕реНрдЯрд╕реЗрдВрдЯреНрд░рд┐рдХ) рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдиреЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓рддрд╛ рд╕реЗ рдХреБрдЫ MSTest рдХреЗ TestClass рдФрд░ TestMethod рдХреЛ рдХреНрд░рдорд╢рдГ TestFixture рдФрд░ Test , рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ NUnit рдФрд░ MSTest рдХреЗ рдпрд╣рд╛рдБ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рдмреНрджрд╛рд░реНрде рд╣реИрдВред рдПрдордПрд╕рдЯреАрдПрд╕реНрдЯ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдирдП рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рд╡рд╛рд▓рд╛ рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ, рдПрдирдпреВрдиреАрдЯ рдЯреЗрд╕реНрдЯрдлрд┐рдХреНрдЪрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рдкреНрд░рд╡рд╛рд╕ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП TestFixture(lifeCycle = OneTestPerInstance)] рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рд▓рд┐рдЦ тАЛтАЛрд╕рдХреВрдВред

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

@ рдЪрд╛рд░реНрд▓реАрдкреВрд▓

рдХреЛрдИ рднреА рдкрд░реАрдХреНрд╖рдг рдЬреЛ рдЖрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рд░рд╛рдЬреНрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдЖрд╣, рд╣рд╛рдБ, рддреЛрдбрд╝реЛ, рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рддреЛрдбрд╝реЛ, рд╕реБрдВрджрд░ рдХреГрдкрдпрд╛ !!! рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХрд╛ рдпрд╣ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рджреБрд░реБрдкрдпреЛрдЧ рд╣реИред

рдХреЛрдИ рднреА рд╕реНрдерд┐рд░рддрд╛-рд╕реНрддрд░ OneTimeSetUp

рдЙрд╣, рдореИрдВрдиреЗ рд╣рдореЗрд╢рд╛ рд╕реЛрдЪрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рддрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ... рдореИрдВрдиреЗ рд╣рдореЗрд╢рд╛ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рд╕реНрдерд┐рд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред

рд▓реЗрдХрд┐рди рд╣рд╛рдБ, рдкреНрд░рджрд░реНрд╢рди рднреА рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╛рдиреНрдп рдмрд┐рдВрджреБ рд╣реИред

рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрдм 2 рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдЪрд░реНрдЪрд╛ рдореЗрдВ рд╣реИ, рдореЗрд░рд╛ рдорддрд▓рдм рдЖрдХреНрд░рд╛рдордХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдареЛрд╕ рдФрд░ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдпреЛрдЬрдирд╛ рд╣реИ?

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

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

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

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдореБрдЭреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕ рддрдереНрдп рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдПрдХ рдПрдирдпреВрдиреАрдЯ рдЯреЗрд╕реНрдЯрдлрд┐рдХреНрдЪрд░ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рд╣реИ рддреЛ рдореИрдВрдиреЗ рдЕрдкрдиреЗ 100+ рдЯреЗрд╕реНрдЯ рдлрд┐рдХреНрд╕реНрдЪрд░ рдХреЛ 500 рд╕реЗ рдЕрдзрд┐рдХ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдереНрд░реЗрдбрд╕реЗрдл рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рджрд┐рдпрд╛ (рдФрд░ рд░рд╛рдЗрдиреЛрдореЙрдХреНрд╕ рд╕реЗ рдореЛрдХ рддрдХ рдЬрд╛рдирд╛ рдкрдбрд╝рд╛ рдХреНрдпреЛрдВрдХрд┐ рд░рд╛рдЗрдиреЛрдореЙрдХреНрд╕ рднреА рдереНрд░реЗрдбрд╕реЗрдл рдирд╣реАрдВ рд╣реИ) рдФрд░ рдпрд╣ рд▓рд┐рдпрд╛ рдореБрдЭреЗ рд▓рдЧрднрдЧ 4 рд╕рдкреНрддрд╛рд╣ (рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд░рд╛рдЗрдиреЛ -> Moq рдиреЗ рдЙрд╕ рд╕рдордп рдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рд▓рд┐рдпрд╛!)

рдЖрдк рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ 100% рд╕рд╣реА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ ~ 7000+ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдореМрдЬреВрджрд╛ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдПрдХ рдмрдбрд╝рд╛ рдирд┐рд╡реЗрд╢ рд╣реИред

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

рдореИрдВ рдЗрд╕ рдмрд╛рдд рдХреА рд╡рдХрд╛рд▓рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

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

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

рдпрд╣ рдкреВрд░рд╛ рдореБрджреНрджрд╛ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕реНрд╡рд┐рдЪ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ... рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ

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

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

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

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд░рд╣рд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

@BlythMeister рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕реНрд╡рд┐рдЪ рдЗрд╕реЗ рдереЛрдбрд╝рд╛

рдЬрд╝рд░реВрд░, рдпрд╣ рдПрдХ рд╕реНрд╡рд┐рдЪ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд▓рд╛рдЗрдЯ рдмрд▓реНрдм рдХреЛ рдЪрд╛рд▓реВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЗ рд░реЗрдбрд┐рдпреЛ рдХреЛ AM рд╕реЗ FM рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдЬреИрд╕рд╛ рд╣реИ... рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдП рд╕рд░реНрдХрд┐рдЯ рдЪрд▓рди рдореЗрдВ рд╣реИрдВред

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

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдЖрдкрдХрд╛ рдЕрдзрд┐рдХрд╛рд░, рдореЗрд░реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЕрд╕реНрдкрд╖реНрдЯ рдереА рдХрд┐ "рд╕реНрд╡рд┐рдЪ" рд╕рд░рд▓ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ!

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

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

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

@ рдЪрд╛рд░реНрд▓реАрдкреВрд▓

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

рд╣рдо рдЗрдВрд╕реНрдЯреЗрдВрд╕-рдкреНрд░рддрд┐-рдЯреЗрд╕реНрдЯ-рдХреЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрднреА рднреА рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╡рдирдЯрд╛рдЗрдорд╕реЗрдЯрдЕрдк рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдореБрдЦреНрдп рдереНрд░реЗрдб рдХреЛ рдЗрд╕реЗ рдпрд╛ рдХреБрдЫ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рдж рд░рдЦреЗрдВ)?

рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ OneTimeSetUp рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ рдЬрд┐рд╕рдиреЗ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рдмрд╣реБрдд рдЖрдо рд╣реИред

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

рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ OneTimeSetUp рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ рдЬрд┐рд╕рдиреЗ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рдмрд╣реБрдд рдЖрдо рд╣реИред

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

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

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХрдо рд╕реЗ рдХрдо рдЖрд╢реНрдЪрд░реНрдп рдХрд╛ рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рдпрд╣рд╛рдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рдпрджрд┐ рдХреЛрдИ рдирдпрд╛ рдлрд┐рдХреНрд╕реНрдЪрд░ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдирд╣реАрдВ рд╣реИред

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

рдпрд╣ рдХрд╣рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рджреЛ рд╕реНрдерд┐рд░рддрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд╢реНрдЪрд┐рдд рдХреЛрдб рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдпреВрдЬрд░реНрд╕ рдХреА рдирдЬрд░ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛрдЧрд╛ред

@fschmied BTW, рдЕрдЧрд░ рд╣рдо рдПрдХ рдирдпрд╛ рдврд╛рдВрдЪрд╛ (рдпрд╛ рд╢рд╛рдпрдж NUnit 4) рднреА рдХрд░ рд░рд╣реЗ рдереЗ, рддреЛ рдореИрдВ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдмрд╣рд╕ рдХрд░реВрдВрдЧрд╛ ... рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ NUnit 2 рдФрд░ 3 рдореЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдмрд╣реБрдд рдХрдард┐рди рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐ , рдЬрдм рддрдХ рд╣рдо NUnit 3 рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдЧрддрддрд╛ рдирд┐рдпрдоред

рдореИрдВ рдЯреЗрд╕реНрдЯрдлрд┐рдХреНрдЪрд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд┐рдХреНрд╕реНрдЪрд░ рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
[...]
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХрдо рд╕реЗ рдХрдо рдЖрд╢реНрдЪрд░реНрдп рдХрд╛ рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рдпрд╣рд╛рдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рдпрджрд┐ рдХреЛрдИ рдирдпрд╛ рдлрд┐рдХреНрд╕реНрдЪрд░ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдирд╣реАрдВ рд╣реИред

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

рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдореВрд▓ рдкрд╛рдк рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдХреЗ рдмреАрдЪ рдПрдХ рд╡реНрдпрд╛рдкрд╛рд░ рд╣реИ [1]ред

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


[рез] рдЬреЗрдореНрд╕ рдиреНрдпреВрдХрд┐рд░реНрдХ рдиреЗ рдпрд╣ рд▓рд┐рдЦрд╛ рд╣реИ :

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рд╣рдордиреЗ NUnit V2.0 рд▓рд┐рдЦрд╛ рдерд╛, рддреЛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдкреЗрдВрдЪ-рдЕрдк рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд╣рд┐рдд рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд┐рд░рддрд╛ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдерд╛ред рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ "рд╣рдо" рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реА рдЧрд▓рддреА рдереАред рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд┐рд░рддрд╛ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреБрдиреАрдЯ рдореЗрдВ рддрд░реНрдХ рдХреЛ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рдпрд╛ред

рд╡рд╣ рдпрд╣ рднреА рд▓рд┐рдЦрддрд╛ рд╣реИ, рдпрджреНрдпрдкрд┐:

[...] рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ NUnit рдЕрдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЙрд╕реЗ рдмрджрд▓рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛, рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рд╢рд┐рдХрд╛рдпрдд рдХрд░реЗрдВрдЧреЗ [...]

:)

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

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

рддреЛ .. рдХреНрдпрд╛ рдпрд╣ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ? рдпрд╛ рдЕрднреА рднреА рдбрд┐рдЬрд╛рдЗрди рдЪрд░рдг рдореЗрдВ?

рдЕрднреА .NET рдореЗрдВ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд╕рдорд╛рдирд╛рдВрддрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде, рдЯреЗрд╕реНрдЯрдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдпрд╛ рдПрдирдпреВрдиреАрдЯ рдХреЗ рдмрд┐рдирд╛ рдпрд╛ рддреЛ рдПрдХреНрд╕рдпреВрдиреАрдЯ рднреВрдорд┐ рд╣реИ

рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рддреА рд╣реИред рдХрд┐рд╕реА рдХреЛ рднреА рдЗрд╕реЗ рд╕реМрдВрдкрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдПрдХ рдореАрд▓ рдХреЗ рдкрддреНрдерд░ рдкрд░ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдпрд╣ рддрдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡реЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╡рд╣ рдПрдХ рдХрдорд┐рдЯрд░ рдпрд╛ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

рддреЛ, рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ?

рдЬрд╝рд░реВрд░, рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА рдХрд╛рдо рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ
https://github.com/avilv/nunit/tree/instance-per-test

рдореИрдВ рдЗрд╕ рдХреЛрдбрдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЬрд┐рддрдирд╛ рд╣реЛ рд╕рдХреЗ рдореВрд▓ рдХреЛрдб рд╢реИрд▓реА рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдЕрдм рддрдХ рдореИрдВрдиреЗ рдПрдХ InstancePerTestCase рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреЗрд╢ рдХреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рдХреНрд▓рд╛рд╕ рд╕реНрддрд░ рдкрд░ рд╕рдорд░реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ

рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдпрд╣рд╛рдВ рдЖрдзрд╛рд░ рд╕реЗ рджреВрд░ рд╣реВрдВ

рдореИрдВрдиреЗ рдЖрдкрдХреА рдЕрдВрддрд┐рдо рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдкрд░ рдХреБрдЫ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдгреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдЬреЛрдбрд╝реАрдВред

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдбрд┐рдЬрд╛рдЗрди рдХреА рдмрд╛рдд рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ IApplyToContext рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рдордЭ рдореЗрдВ рдЖрддреА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕рд┐рд░реНрдл InstancePerTestCase рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рд╢рд╛рдпрдж

C# [FixtureLifeCycle(LifeCycle.InstancePerTestCase]

рдЗрд╕рд╕реЗ рдЖрдк рдЗрд╕реЗ рдЕрд╕реЗрдВрдмрд▓реА рд╕реНрддрд░ рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд┐рдХреНрд╕реНрдЪрд░ рдкрд░ рд░реАрд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЪрд╛рд░реНрд▓реАрдкреВрд▓ рдЖрдк рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рд╣реИрдВ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рдорджрдж рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЪреАрдЬреЗрдВ рдХреИрд╕реЗ рдмрдирддреА рд╣реИрдВ / рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рдЖрджрд┐ред рдзреАрд░реЗ-рдзреАрд░реЗ рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ

рд▓рд╛рдЗрдлрд╕рд╛рдЗрдХрд▓ рдПрдирдо рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (ive рдиреЗ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рд╕рд╛рде рдореЗрд░реА рд╢рд╛рдЦрд╛ рдХреЛ рднреА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ)

    /// <summary>
    /// Specifies the lifecycle for a fixture.
    /// </summary>
    public enum LifeCycle
    {
        /// <summary>
        /// A single instance is created and for all test cases.
        /// </summary>
        SingleInstance,

        /// <summary>
        /// A new instance is created for each test case for fixtures that are marked with <see cref="ParallelizableAttribute"/>.
        /// </summary>
        InstancePerTestCaseForParallelFixtures,

        /// <summary>
        /// A new instance is created for each test case.
        /// </summary>
        InstancePerTestCase
    }

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

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

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

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рдореИрдВ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╕рдорд╛рдирд╛рдВрддрд░ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЬрд╣рд╛рдВ рд╕реЗ рдПрдирдпреВрдиреАрдЯ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореЙрдбрд▓ рдЖрдкрдХреЛ рдХрд╛рдЯреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЬреАрд╡рди рдЪрдХреНрд░ рд╣реЛрдЧрд╛ (рдирдирд┐рдЯ 4?) рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд╢реБрд░реВ рд╕реЗ рдРрд╕рд╛ рд░рд╣рд╛ рд╣реИ

рд╢рд╛рдпрдж рд╣рдореЗрдВ рдЗрд╕реЗ SingleInsance/InstancePerTestCase рдкрд░ рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП

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

рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рд╕реА рднреА рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд┐рд░рддрд╛ рдХрд╛ рдирд┐рдкрдЯрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ IDisposable рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗред

рдмрдврд╝рд┐рдпрд╛, рдХрд░реЗрдВрдЧреЗред

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

DisposeFixtureCommand рдирд┐рдкрдЯрд╛рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрддрд╛ рд╣реИред

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

@CharliePoole рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рд╣реА рд╣реИрдВ, рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдкрд░ рдереЛрдбрд╝рд╛ рд╕рд╛ рд░реЗрдЦрд╛рдВрдХрди рдХрд┐рдпрд╛ рд╣реИ:
image

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

рдореИрдВрдиреЗ рдирд╡реАрдирддрдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛
https://github.com/avilv/nunit/tree/instance-per-test-2

рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЗрдВрд╕реНрдЯреЗрдВрд╕рдкреЗрд░рдЯреЗрд╕реНрдЯрдХреЗрд╕рдЬрдм рдХреЗрд╕ рд╕рдорд╛рдирд╛рдВрддрд░ рд╣реИрдВ
CompositeWorkItem MakeOneTimeSetUpCommand рдореЗрдВ SimpleWorkItem рдореЗрдВ MakeTestCommand рдЕрдВрджрд░ рдирд┐рд░реНрдорд╛рдг / рдирд┐рдкрдЯрд╛рди рд╕реНрдерд┐рд░рддрд╛ рдЬреЛрдбрд╝рдиреЗ, рдФрд░ рд▓рдВрдШрди рдпрд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ FixtureLifeCycle

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рднреА рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдврд╛рдВрдЪрд╛ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдЕрдм рдореБрдЭреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ

рдХрд┐рд╕реА рднреА рдореМрдХреЗ рдкрд░ рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЬрд╛рдПрдЧреА? рдореИрдВ рдЕрднреА рднреА рд╕реБрдзрд╛рд░/рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ

рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рд╣рдо рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ рдореЗрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛!

рдХрд┐рд╕реА рднреА рдореМрдХреЗ рдкрд░ рд╣рдо рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд░реАрдм рдЖ рд░рд╣реЗ рдереЗ

рдЙрддреНрд╕реБрдХ рдЕрдЧрд░ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рдХреЛрдИ рд╣рд▓рдЪрд▓ рд╣реБрдИ рд╣реИ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @avilv рдиреЗ рдЗрд╕реЗ рдХрд╛рдлреА рдХрд░реАрдм рдкрд╛ рд▓рд┐рдпрд╛ рд╣реИред рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реИрдВ!

рд╕рдмрдХреЛ рд╢реБрдХреНрд░реАрдпрд╛!

рдХреНрдпрд╛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрдм рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ?

@CharliePoole рдЖрдк рд╕рдореАрдХреНрд╖рд╛ @avilv рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЦреБрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЗрд╕ рдлреАрдЪрд░ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@janissimsons рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдм рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдирд╣реАрдВ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рд╕рдореАрдХреНрд╖рд╛ рдЗрд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ

#3427 рдХрд╛ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдП рдЧрдП рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВред @rprouse рдХреНрдпрд╛ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдЬрдм рд╣рдо рдПрдХ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдЗрд╕рдХреА рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рд╣рдо рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдХреЛрдИ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдирдХрд╛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдореИрдВ рдЕрдЧрд▓реЗ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рдореЗрдВ рд░рд┐рд▓реАрдЬ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рддрдм рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред NET 5 рдЕрдВрддрд┐рдо рд╣реИ рдФрд░ рд░рд┐рд▓реАрдЬ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЕрдВрддрд┐рдо рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рдХрд░реАрдм рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред

@rprouse рдХреЛрдИ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдЖрдк рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХрдм рдЬрд╛рд░реА рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ? рдореИрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

@janissimsons рдмрд╣реБрдд рдЬрд▓реНрджред рд╣рдо рдЕрдкрдиреЗ .NET 5.0 рдмрд┐рд▓реНрдб рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдореБрджреНрджреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдлрд┐рд░ рдореИрдВ рд░рд┐рд▓реАрдЬ рдХрд░реВрдВрдЧрд╛ред рдЖрдк рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмреЛрд░реНрдб рдкрд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, https://github.com/nunit/nunit/projects/4

рдпрд╣ рдЕрджреНрднреБрдд рдЦрдмрд░ рд╣реИ!

рдХреНрдпрд╛ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рд╕реЗ рдПрдирдпреВрдиреАрдЯ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рдПрдЧрд╛?

рдЗрди рд╕рднреА рдХреЛ рдорд┐рд▓рд╛рдПрдВ:

  • рдЯреЗрд╕реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░рдХреГрдд рд╣реИрдВ
  • рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдБред
  • рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдПрдХ рд╣реА рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░рдпреБрдХреНрдд рд░реВрдкрд╛рдВрддрд░реЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛред
  • рдЯреЗрд╕реНрдЯ рдбреЗрдЯрд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ

рдЕрддреАрдд рдореЗрдВ рдпрд╣рд╛рдВ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА https://github.com/jawn/dotnet-parallel-parameterized-tests

рдХреНрдпрд╛ рдирдИ рд░рд┐рд▓реАрдЬрд╝ рдЕрднреА рднреА .NET Full Framework 4.7.2 рдпрд╛ рдХрдо рд╕реЗ рдХрдо 4.8 рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдЧреА?

рд╕рд╛рджрд░,
рдбреЙ

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

@drauch рд╣рд╛рдБ, 3.13 рд░рд┐рд▓реАрдЬрд╝ рдЕрднреА рднреА .NET 3.5 рдкрд░ рд╡рд╛рдкрд╕ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛ред

@avilv рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо !!
рд╡реИрд╕реЗ рдЖрдкрдиреЗ рдХрд┐рд╕ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╣ рдЕрдЪреНрдЫрд╛ рдкреНрд░рд╡рд╛рд╣ рдЖрд░реЗрдЦ рдмрдирд╛рдпрд╛ рд╣реИ?
рдзрдиреНрдпрд╡рд╛рдж

@rprouse рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рднреА рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдзрдиреНрдпрд╡рд╛рдж!

@janissimsons рдореИрдВ рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред рд▓рдШреБ рд╕рдВрд╕реНрдХрд░рдг рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдкрдХреА рдкрд░реАрдХреНрд╖рдг рдХрдХреНрд╖рд╛ рдореЗрдВ [FixtureLifeCycle(LifeCycle.InstancePerTestCase)] рдЬреЛрдбрд╝рдирд╛ рд╣реИ, рд╢рд╛рдпрдж [Parallelizable(ParallelScope.All)] рдФрд░ рдХрдХреНрд╖рд╛ рдХреЗ рднреАрддрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рддрддреНрдХрд╛рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдЖрдк рдХрдХреНрд╖рд╛ рдореЗрдВ рд╕рджрд╕реНрдп рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд╛рдирд╛рдВрддрд░ рдкрд░реАрдХреНрд╖рдг рд░рди рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдЪрд░ рдмрджрд▓рддреЗ рд╣реИрдВред

@LirazShay рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рдЖрд░реЗрдЦ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдк рд╕рдорд╛рдзрд╛рди рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдореЗрдВ рдЪрдпрди рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "рдХреЛрдб рдореИрдк рдкрд░ рджрд┐рдЦрд╛рдПрдВ" рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред https://docs.microsoft.com/en-us/visualstudio/modeling/map-dependencies-across-your-solutions ReSharper рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред

@jnm2 рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж !!!
рдореЗрд░реЗ рдкрд╛рд╕ рд╡реАрдПрд╕ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдЯрд┐рдк рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж

рдХреНрдпрд╛ рдореИрдВ рд╕рд╣реА рд╣реВрдВ рдХрд┐ рдпрд╣ рд░рд┐рд▓реАрдЬ рд╣реЛ рдЪреБрдХреА рд╣реИ рдФрд░ 3.13 рд░рд┐рд▓реАрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ?

рдХреНрдпрд╛ рдореИрдВ рд╕рд╣реА рд╣реВрдВ рдХрд┐ рдпрд╣ рд░рд┐рд▓реАрдЬ рд╣реЛ рдЪреБрдХреА рд╣реИ рдФрд░ 3.13 рд░рд┐рд▓реАрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ?

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рджреЗрдЦреА рдЧрдИ рд╣реИрдВ рдФрд░ рддрдп рдХреА рдЧрдИ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ #3720 рдореЗрдВ рдЕрд╕реЗрдВрдмрд▓реА-рд╕реНрддрд░реАрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдЖрд╡реЗрджрди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдФрд░ рд╣рдо рдЕрдм 3.13.1 рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

NUnit 3.13.1 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдХреЛрдИ рдФрд░ рдореБрджреНрджрд╛ рдмрд╛рдХреА рд╣реИ?

рдирд╣реАрдВ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ @andrewlaser

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Aarskin picture Aarskin  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Thaina picture Thaina  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ffMathy picture ffMathy  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zastrowm picture zastrowm  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dgm90 picture dgm90  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ