Nunit: рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ NUnit 3

рдХреЛ рдирд┐рд░реНрдорд┐рдд 26 рдирд╡ре░ 2015  ┬╖  21рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: nunit/nunit

рдПрдирдпреВрдиреАрдЯ 2.6.4 рдореЗрдВ, рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдбреАрдЖрдИрдЖрд░ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдбреАрдПрд▓рдПрд▓ рдХреА рд╕рдВрдмрдВрдзрд┐рдд bin/Debug рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдиреЗ рдореБрдЭреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдмрд╛рд╣рд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рд╡рд░реНрдХрд┐рдВрдЧ рдбреАрдЖрдИрдЖрд░ рдХрдВрд╕реЛрд▓ рд░рдирд░ рдХреА рд╡рд░реНрдХрд┐рдВрдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрд░ рд╕реЗрдЯ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдбрд┐рдЬрд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╣реИ?

рдореИрдВ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП bin/Debug рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рдбреАрдЖрдИрдЖрд░ рдХреЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП рдХрдВрд╕реЛрд▓ рд░рдирд░ рдХреЗ рдХрд╛рдо рдбреАрдЖрдИрдЖрд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдгрд╛рдо (*.рдПрдХреНрд╕рдПрдордПрд▓ рдлрд╛рдЗрд▓реЗрдВ) рдХреИрд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ?

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

@imakowski рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗрдЯрдЕрдк рдореЗрдВ рдХрд┐рд╕реА рдЬреНрдЮрд╛рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ? рдкрд░реАрдХреНрд╖рдг рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЗрд╕ рддрд░рд╣;

``` рд╕реА#
[рд╕реЗрдЯрдЕрдкрдлрд┐рдХреНрдЪрд░]
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ MySetUpClass
{
[рдПрдХ рдмрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛]
RunBeforeAnyTests ()
{
var dir = Path.GetDirectoryName(typeof(MySetUpClass).Assembly.Location);
рдкрд░реНрдпрд╛рд╡рд░рдгред рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ = рдбреАрдЖрдИрдЖрд░;

    // or
    Directory.SetCurrentDirectory(dir);
}

}
```

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

рдпрд╣ рдбрд┐рдЬрд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://github.com/nunit/nunit/wiki/Breking-Changes

рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, NUnit рдиреЗ рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред рдпрд╣ рдЕрдм рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдЕрд╕реЗрдВрдмрд▓реА рд╡рд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк TestContext.TestDirectory рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдирдпрд╛ рдпреВрдЖрд░рдПрд▓: https://github.com/nunit/docs/wiki/Breking-Changes

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

@imakowski рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗрдЯрдЕрдк рдореЗрдВ рдХрд┐рд╕реА рдЬреНрдЮрд╛рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ? рдкрд░реАрдХреНрд╖рдг рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЗрд╕ рддрд░рд╣;

``` рд╕реА#
[рд╕реЗрдЯрдЕрдкрдлрд┐рдХреНрдЪрд░]
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ MySetUpClass
{
[рдПрдХ рдмрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛]
RunBeforeAnyTests ()
{
var dir = Path.GetDirectoryName(typeof(MySetUpClass).Assembly.Location);
рдкрд░реНрдпрд╛рд╡рд░рдгред рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ = рдбреАрдЖрдИрдЖрд░;

    // or
    Directory.SetCurrentDirectory(dir);
}

}
```

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

@rprouse рдпрд╣ рдХреЛрдб рд╢реИрдбреЛ рдХреЙрдкреА рдореЛрдб рдореЗрдВ рд╣реЛрдиреЗ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ
var dir = Path.GetDirectoryName(typeof(MySetUpClass).Assembly.Location);

рдЖрдк рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
var dir = Path.GetDirectoryName(new Uri(typeof(MySetUpClass).Assembly.CodeBase).LocalPath);

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рд╣рдо рдЗрд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП TestContext.CurrentContext.TestDirectory рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред :-)

рд╣рдо рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдорд╛рдпреЛрдЬрди рдХреЗ рд╕рд╛рде рд╕реБрдЭрд╛рд╡ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЙрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рд╣рдо рдЗрд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП TestContext.CurrentContext.TestDirectory рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред :-)

CurrentContext рдореЗрдВ рдЕрдм рдХреЛрдИ TestDirectory рдкреНрд░реЙрдкрд░реНрдЯреА рдирд╣реАрдВ рд╣реИред рдореИрдВ рдиреВрдирд┐рдЯ 3.6.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдХреЗрд╡рд▓ рд╡рд░реНрдХрдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╣реИ рдЬреЛ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рдореИрдВ рдкреБрдирд░реНрд╡рд┐рдХреНрд░рдп рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдЧрд▓рдд рдЬрдЧрд╣ рдкрд░ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ :(

TestContext.TestDirectory рд╣реИред рдпрд╣ рдПрдХ рд╕реНрдерд┐рд░ рд╕рдВрдкрддреНрддрд┐ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рд╡рд░реНрдХрдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рднреА рд╣реИ?

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

рдореИрдВ рдЧрд▓рдд рдерд╛ред

рдпрд╣ TestContext.CurrentContext.TestDirectory рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдкреЛрд░реНрдЯреЗрдмрд▓ рдмрд┐рд▓реНрдб рдкрд░ рдирд╣реАрдВ рд╣реИред

#if !PORTABLE
        /// <summary>
        /// Gets the directory containing the current test assembly.
        /// </summary>
        public string TestDirectory
        {
            get
            {
                Assembly assembly = _testExecutionContext?.CurrentTest?.TypeInfo?.Assembly;

                if (assembly != null)
                    return AssemblyHelper.GetDirectoryName(assembly);

#if NETSTANDARD1_6
                // Test is null, we may be loading tests rather than executing.
                // Assume that the NUnit framework is in the same directory as the tests
                return AssemblyHelper.GetDirectoryName(typeof(TestContext).GetTypeInfo().Assembly);
#else
                // Test is null, we may be loading tests rather than executing.
                // Assume that calling assembly is the test assembly.
                return AssemblyHelper.GetDirectoryName(Assembly.GetCallingAssembly());
#endif
            }
        }
#endif

рдпрд╣ 3.6.0 рдореЗрдВ рд╣реИ рд▓реЗрдХрд┐рди 3.6.1 рдореЗрдВ рдирд╣реАрдВ рд╣реИ

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдЬреАрдердм рд░реЗрдкреЛ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдКрдкрд░ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛ред

рдХреНрдпрд╛ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рддрд░рд╣ рдкреЛрд░реНрдЯреЗрдмрд▓ рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рд╣рд╛рдБ, рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ

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

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

Directory.SetCurrentDirectory (AppDomain.CurrentDomain.BaseDirectory);

рд▓реЛрдЧреЛрдВ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдХреЗ рд▓рд┐рдП eyeballing рдПрдХ рд╕рд╛рде рдбрд╛рд▓ рдХреНрдпрд╛ @CharliePoole рдФрд░ @rprouse рдХрд╣рд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣реИ

[SetUpFixture]
public class MySetUpClass
{
    [OneTimeSetUp]
    public void RunBeforeAnyTests()
    {
        Environment.CurrentDirectory = TestContext.CurrentContext.TestDirectory;
        // or identically under the hoods
        Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory);
    }
}

рд╡реИрд╢реНрд╡рд┐рдХ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рд▓рд┐рдП

рдЙрдкрд░реЛрдХреНрдд рддрд░реНрдХ рдХреЛ рдХрд┐рд╕реА рднреА рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рдЕрдВрджрд░ рд╕рдВрд▓рдЧреНрди рди рдХрд░реЗрдВред рдЕрд░реНрдерд╛рдд

using NUnit.Framework;
using System;
using System.IO;

[SetUpFixture]
public class GlobalSetup
{
    [OneTimeSetUp]
    public void RunBeforeAnyTests()
    {
        Environment.CurrentDirectory = TestContext.CurrentContext.TestDirectory;
        // or identically under the hoods
        Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory);
    }
}

рд╕рд╛рде рд╣реА, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ TestContext.CurrentContext.TestDirectory рдореЗрдВ рдХреЛрдиреЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рдЦреБрдлрд┐рдпрд╛ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ typeof(MySetUpClass).Assembly.Location

рддреЛ рдореИрдВ рдЗрд╕реЗ рдЯрд╛рдЗрдкрдСрдл (MySetUpClass) рдкрд░ рдЪреБрдиреВрдВрдЧрд╛ред рдЕрд╕реЗрдВрдмрд▓реАред рд╕реНрдерд╛рди

Location рдпрджрд┐ рдЕрд╕реЗрдВрдмрд▓реА рдЫрд╛рдпрд╛-рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╣реИ, рддреЛ рдЖрдорддреМрд░ рдкрд░ рдЖрдк рдЗрд╕реЗ рдирд╣реАрдВ рдЪрд╛рд╣реЗрдВрдЧреЗред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп CodeBase рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рдХрд┐рд╕реА рднреА рдЫрд╛рдпрд╛-рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╕реЗ рдкрд╣рд▓реЗ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд╛рди рдХрд╛ Uri рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕реЗ рдЗрд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

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

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

yaakov-h picture yaakov-h  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

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

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