Nunit: рдкрдХрдбрд╝рдиреЗ рдХрд╛ рджрд╛рд╡рд╛ 3.10 рдХреЗ рдмрд╛рдж рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 14 рдорд╛рд░реНрдЪ 2018  ┬╖  22рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: nunit/nunit

````
рдкреНрд░рдпрддреНрди
{
Assert.True (рдЧрд▓рдд, "рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢");
}
рдкрдХрдбрд╝реЗрдВ (рдЕрднрд┐рдХрдерди рдЕрдкрд╡рд╛рдж рдИ)
{
рдЯреНрд░реЗрд╕ред рд░рд╛рдЗрдЯрд▓рд╛рдЗрди ("рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВред");
}

        Trace.WriteLine("Test Passed");

````

рдиреВрдирд┐рдЯ 3.9.0 рдореЗрдВ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЯреЗрд╕реНрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рд╕реЗ рдЪрд▓рдиреЗ рдкрд░ рдЯреЗрд╕реНрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдореЗрдВ рдЙрддреНрддреАрд░реНрдг рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдиреВрдирд┐рдЯ 3.10 рдореЗрдВ рдЯреЗрд╕реНрдЯрдХреЗрд╕ рдХреЛ рдЯреЗрд╕реНрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдУрд╡рд░рд╡реНрдпреВ рдореЗрдВ рд╡рд┐рдлрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдВрддрд┐рдо рдЯреНрд░реЗрд╕ рд▓рд╛рдЗрди рджреЛрдиреЛрдВ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред

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

@fluffynuts рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ, рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ Assert.Catch рд▓рд┐рдЦрд╛ рдерд╛, рддреЛ рдЙрд╕рдиреЗ рдХреЗрд╡рд▓ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдкрдХрдбрд╝рд╛ рдФрд░ рдпрджрд┐ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХрд╛ рдЧрдпрд╛ рддреЛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реБрдИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Assert.Throws рдмрд░рд╛рдмрд░ "рддрдЯрд╕реНрде" рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдк рдПрдХ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ Assert.Throws рдореЗрдВ рдХреЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЖрдк Assert.Throws рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрд╕рд┐рдВрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред

```рд╕реА#
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рд╢реВрдиреНрдп рдЕрдкрд╡рд╛рдж SafelyCatchAnNUnitException (TestDelegate рдХреЛрдб)
{
рдЕрдкрд╡рд╛рдж рдкрдХрдбрд╝рд╛ рдЕрдкрд╡рд╛рдж = рд╢реВрдиреНрдп;

using (new TestExecutionContext.IsolatedContext())
{
    try
    {
        code();
    }
    catch (Exception ex)
    {
        caughtException = ex;
    }

    return caughtException;
}

}
```

рд╡рд┐рдзрд┐ рдлреЗрдВрдХреЗ рдЧрдП рдХрд┐рд╕реА рднреА рдЕрдкрд╡рд╛рдж рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧреА, NUnit рдХреЗ рдореБрдЦрд░ рддрд░реАрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЫреЛрдбрд╝реА рдЧрдИ рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд┐рд╕реА рднреА рдЕрд╡рд╢реЗрд╖ рдХреЛ рд╕рд╛рдл рдХрд░ рджреЗрдЧреАред рдпрджрд┐ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрд╢рдХреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

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

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

рдЖрдкрдХрд╛ рдкрд░реАрдХреНрд╖рдг рджреЛ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ NUnit рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

  1. рдпрд╣ рдХрд┐ рд╕рднреА рдЕрднрд┐рдХрдерди рд╡рд┐рдлрд▓рддрд╛рдПрдБ рдПрдХ AssertionException рдХреЛ рдлреЗрдВрдХ рджреЗрддреА рд╣реИрдВред
  2. рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдирд╛ рддреНрд░реБрдЯрд┐ рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред

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

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

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

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

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

Warn.If рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ... __ рдЫреЛрдбрд╝рдХрд░__ рдЯреЗрд╕реНрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдХреЗ рддрд╣рддред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЯреЗрд╕реНрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдкрд╛рд╕ рдФрд░ рдлреЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВред рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЪреЗрддрд╛рд╡рдиреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рдореЗрдВ рдХрд░рдирд╛ рдерд╛ рдЬрд┐рд╕реЗ рд╡реЗ рддрдм рддрдХ рд╕рдордЭ рд╕рдХреЗрдВ рдЬрдм рддрдХ рдХрд┐ рд╡реЗ рдЪреЗрддрд╛рд╡рдиреА рдкрд░рд┐рдгрд╛рдо рд╕реНрдерд┐рддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░ рджреЗрддреЗред рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЕрдирд┐рд░реНрдгрд╛рдпрдХ рдкрд░рд┐рдгрд╛рдо рд░рд╛рдЬреНрдп рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИред

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

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

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

@svanimpelen рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдкрд░рддрджрд╛рд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП Retry рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ? рдпрд╣ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдХрдИ рдмрд╛рд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

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

рд╣рдорд╛рд░реЗ рдХрдИ рддрд░реАрдХреЛрдВ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИ рдХрд┐ рдПрдкреАрдЖрдИ рд╡рд┐рдлрд▓рддрд╛ рдкрд░ AssertionException рдлреЗрдВрдХрддрд╛ рд╣реИ:

https://github.com/nunit/nunit/blob/d03e93c8f25170a8ff48e80863a3fe6fd294613a/src/NUnitFramework/framework/Assert.That.cs#L40 -L43

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

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

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

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

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

рдореБрдЭреЗ XML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ AssertionException рдХреЗ рд╕рднреА рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЛ AssertionException рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреА рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рд╡рд┐рдХреА рдкреЗрдЬ рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИред

рдпрджрд┐ AssertionException рдХреЛ рдкрдХрдбрд╝рдирд╛ рд╣рдореЗрд╢рд╛ рдПрдХ рдмрдЧ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рд╣рдо рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЖрдВрддрд░рд┐рдХ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@ рдЬреЗрдПрдирдПрдо2.

рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде XML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рдорд╣рддреНрд╡ рдкрд░ рд╕рд╣рдордд рд╣реВрдБ рд▓реЗрдХрд┐рди рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ __not__ рд╣реИрдВ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╣рдо рдЕрдм рддрдХ рдЕрдиреБрдмрдВрдз рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╕рдВрдкреНрд░реЗрд╖рд┐рдд рдХрд░рддреЗ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред

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

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

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

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

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

BTW, рдореЗрд░рд╛ рдкрд┐рдЫрд▓рд╛ рдЕрдиреБрднрд╡ рдпрд╣ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдирд╛, рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХрд░рддрд╛ рд╣реИред рдореИрдВ

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

рдХреНрдпрд╛ рд╣рдореЗрдВ рдбреЙрдХреНрд╕ рдлрд┐рдХреНрд╕ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдирдпрд╛ рдХреНрдпреЛрдВ?

рд╢реАрд░реНрд╖рдХ рдХреБрдЫ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЙрддреНрддрд░ рджрд┐рдП рдЧрдП рдкреНрд░рд╢реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░ рджреЗрдВрдЧреЗред рдХреНрдпрд╛ рд╣рдо рдЖрдо рддреМрд░ рдкрд░ рд╢реАрд░реНрд╖рдХ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?

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

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

рдХреНрдпрд╛ рдЖрдк рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рд╣рдо рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

3.10 рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ?

рдзрдиреНрдпрд╡рд╛рджред

рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ Assert.Throws рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд░рдирд╛ рд╣реИред Assert.Throws NUnit рдЗрдВрдЯрд░реНрдирд▓ рдХреЛ рд╕рдордЭрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдлрд▓рддрд╛ рдХреА рд╕реВрдЪрдирд╛ рди рджреА рдЬрд╛рдПред

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

рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЙрдЪрд┐рдд рдПрдирдпреВрдиреАрдЯ рджрд╛рд╡реЗ рдирд╣реАрдВ рдлреЗрдВрдХ рд╕рдХрддрд╛, рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдХрдард┐рди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рддреНрд╡рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛрдб рдореЗрдВ Assert.That рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛?

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

рд╢рд╛рдпрдж рд╣рдореЗрдВ рдХреБрдЫ рдкрд░рд┐рдгрд╛рдо рдПрдкреАрдЖрдИ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

@fluffynuts рдЕрдЧрд░ рдореИрдВ рдЖрдкрдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ catch рдХреНрд▓реЙрдЬ рдЖрдкрдХреЗ рдЯреЗрд╕реНрдЯ рдХреЛрдб рдореЗрдВ рд╣реИ, рди рдХрд┐ рдЖрдкрдХреЗ рдпреВрдЬрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдХреЛрдб рдореЗрдВред (рдпрджрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рднреА рд╣реИ, рддреЛ рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрджреНрджреЗ рдереЛрдбрд╝реЗ рдЕрд▓рдЧ рд╣реИрдВред)

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

рд░рдХреНрд╖рд╛ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ Assert.Throws ред рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓рддрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк try / catch(AssertionException) рдХреЛ рд╕реАрдзреЗ Assert.Throws<AssertionException> рд╣реИрдВред рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ Assert.Throws рдПрдХ рдЕрд▓рдЧ TestExecutionContext Assert.Throws рдмрдирд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдкрдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рдЙрд╕ рддреНрд░реБрдЯрд┐ рд╕реЗ рдкреНрд░рджреВрд╖рд┐рдд рди рд╣реЛрдВ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред

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

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

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдХреЛрдИ рднреА рдкреНрд░рд╢реНрди рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ рдпрд╛ рдореБрдЭрд╕реЗ рдСрдлрд╝рд▓рд╛рдЗрди рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВред

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

рд╣реЗ, рдореБрдЭреЗ рдЕрднреА рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореЗрд░реЗ AsyncVoidVerificationScope рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рдкрдВрдк рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓рддрд╛рдПрдВ рдЬреЛ рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдареАрдХ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬреИрд╕реЗ @fluffynuts рдореЗрдВ рд╣реИред рдЕрд╕рд▓ рдореЗрдВ рдПрдирдпреВрдиреАрдЯ 3.10 рдЕрдкрдЧреНрд░реЗрдб рдХреЗ рдХрд╛рд░рдг, рдореЗрд░реА [рдЕрд╕реЗрдВрдмрд▓реА: рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ] ITestAction рдирд╣реАрдВред рдПрдХ рд╕рд╛рде рдХрдИ рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП рдЙрдиреНрд╣реЗрдВ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рд╕реЗрд╡рд╛ рдХрд░рддрд╛ рд╣реИред :рдбреА

рд╡реИрд╕реЗ рднреА, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЖрдордВрддреНрд░рдг рдХреЛ using (new TestExecutionContext.IsolatedContext()) рдореЗрдВ рд▓рдкреЗрдЯрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреИрд╕реЗ Assert.Throws рдХрд░рддрд╛ рд╣реИред

Assert.Throws рдФрд░ Assert.ThrowsAsync рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрд╕рд┐рдВрдХреНрд╕ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрджрд░реНрдн рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ?

@fluffynuts рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ, рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ Assert.Catch рд▓рд┐рдЦрд╛ рдерд╛, рддреЛ рдЙрд╕рдиреЗ рдХреЗрд╡рд▓ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдкрдХрдбрд╝рд╛ рдФрд░ рдпрджрд┐ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХрд╛ рдЧрдпрд╛ рддреЛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реБрдИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Assert.Throws рдмрд░рд╛рдмрд░ "рддрдЯрд╕реНрде" рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдк рдПрдХ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ Assert.Throws рдореЗрдВ рдХреЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЖрдк Assert.Throws рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрд╕рд┐рдВрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред

```рд╕реА#
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рд╢реВрдиреНрдп рдЕрдкрд╡рд╛рдж SafelyCatchAnNUnitException (TestDelegate рдХреЛрдб)
{
рдЕрдкрд╡рд╛рдж рдкрдХрдбрд╝рд╛ рдЕрдкрд╡рд╛рдж = рд╢реВрдиреНрдп;

using (new TestExecutionContext.IsolatedContext())
{
    try
    {
        code();
    }
    catch (Exception ex)
    {
        caughtException = ex;
    }

    return caughtException;
}

}
```

рд╡рд┐рдзрд┐ рдлреЗрдВрдХреЗ рдЧрдП рдХрд┐рд╕реА рднреА рдЕрдкрд╡рд╛рдж рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧреА, NUnit рдХреЗ рдореБрдЦрд░ рддрд░реАрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЫреЛрдбрд╝реА рдЧрдИ рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд┐рд╕реА рднреА рдЕрд╡рд╢реЗрд╖ рдХреЛ рд╕рд╛рдл рдХрд░ рджреЗрдЧреАред рдпрджрд┐ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрд╢рдХреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

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

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

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

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

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

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

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

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