рдПрдирдпреВрдиреАрдЯ 2.6.4 рдореЗрдВ, рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдбреАрдЖрдИрдЖрд░ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдбреАрдПрд▓рдПрд▓ рдХреА рд╕рдВрдмрдВрдзрд┐рдд bin/Debug
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдиреЗ рдореБрдЭреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдмрд╛рд╣рд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рд╡рд░реНрдХрд┐рдВрдЧ рдбреАрдЖрдИрдЖрд░ рдХрдВрд╕реЛрд▓ рд░рдирд░ рдХреА рд╡рд░реНрдХрд┐рдВрдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрд░ рд╕реЗрдЯ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдбрд┐рдЬрд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╣реИ?
рдореИрдВ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП bin/Debug
рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рдбреАрдЖрдИрдЖрд░ рдХреЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП рдХрдВрд╕реЛрд▓ рд░рдирд░ рдХреЗ рдХрд╛рдо рдбреАрдЖрдИрдЖрд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдгрд╛рдо (*.рдПрдХреНрд╕рдПрдордПрд▓ рдлрд╛рдЗрд▓реЗрдВ) рдХреИрд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ?
рдпрд╣ рдбрд┐рдЬрд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: 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
(рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╡реЗ рднреА рдкреНрд░рдХрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рддрдХ рджреЗрдЦрднрд╛рд▓ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@imakowski рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗрдЯрдЕрдк рдореЗрдВ рдХрд┐рд╕реА рдЬреНрдЮрд╛рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ? рдкрд░реАрдХреНрд╖рдг рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЗрд╕ рддрд░рд╣;
``` рд╕реА#
[рд╕реЗрдЯрдЕрдкрдлрд┐рдХреНрдЪрд░]
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ MySetUpClass
{
[рдПрдХ рдмрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛]
RunBeforeAnyTests ()
{
var dir = Path.GetDirectoryName(typeof(MySetUpClass).Assembly.Location);
рдкрд░реНрдпрд╛рд╡рд░рдгред рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ = рдбреАрдЖрдИрдЖрд░;
}
```