рдкрд╛рд╡рд░рдореЙрдХ (+ рдореЙрдХрд┐рдЯреЛ): рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рдПрдХ рдирдпрд╛ рд░реВрдк

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


рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдХрд╛рдо рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП: рдЬрд╛рд╡рд╛, рдЬреБрдиреАрдд, рдореЙрдХрд┐рдЯреЛ рдХрд╛ рдЬреНрдЮрд╛рдиред рдпрд╣ рд╕рд╛рд░рд╛ рд╕рд╛рдорд╛рди рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдорд╛рд╡реЗрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрдХрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдХрд┐рд╕реА рдХреЛ рднреА рдЗрд╕рд╕реЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛)ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо 4 рд╕рдВрд╕реНрдХрд░рдг рдХреА рдПрдХ JUnit рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝реА рдЧрдИ рд╣реИред рдмреЗрд╢рдХ, рдЖрдк рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рд╕рднреА рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд░реЗрдВрдЧреЗред рдЕрдм Mockito & PowerMock рдХреЛ рдЬреЛрдбрд╝реЗрдВред рдЖрдкрдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП:

<properties> <junit.version>4.11</junit.version> <mockito.version>1.9.5</mockito.version> <powermock.version>1.5</powermock.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> <version>${mockito.version}</version> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>${powermock.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito</artifactId> <version>${powermock.version}</version> <scope>test</scope> </dependency> </dependencies> 


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

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

 //   public final class ExternalService { public void doMegaWork() { //   , //         =) } } //   public class InternalService { private final ExternalService externalService; public InternalService(final ExternalService externalService) { this.externalService = externalService; } public void doWork() { externalService.doMegaWork(); } } 


рдмрдЧреАрдЪреЗ рдореЗрдВ рдмрд╛рдбрд╝ рди рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрджреНрднреБрдд рдЕрд╡рд╕рд░ рдХрд╛ рд▓рд╛рдн рд▓реЗрдВ рдкрд╛рд╡рд░рдореЙрдХред рдкрд░реАрдХреНрд╖рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 @RunWith(PowerMockRunner.class) @PrepareForTest({ ExternalService.class }) public class InternalServiceTest { private final ExternalService externalService = PowerMockito.mock(ExternalService.class); private final InternalService internalService = new InternalService(externalService); @Before public void before() { Mockito.reset(externalService); } @Test public void doWorkTest() { internalService.doWork(); Mockito.verify(externalService).doMegaWork(); } } 


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

рдПрдХ рдФрд░ рд╕рд░рд▓ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реНрдерд┐рд░ рддрд░реАрдХреЛрдВ рд╕реЗ рдХреЙрд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╣реИред рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ:

 //   public class StaticService { public static void doStatic() { // } public static String doStaticWithParams(final Object obj) { return ""; } } //   public class UseStaticService { public String useStatic(final Object obj) { StaticService.doStatic(); // return StaticService.doStaticWithParams(obj); } } //    @RunWith(PowerMockRunner.class) @PrepareForTest({ StaticService.class }) public class UseStaticServiceTest { private static final Object OBJECT_PARAM = new Object(); private static final String RETURN_STRING = "result"; private final UseStaticService useStaticService = new UseStaticService(); public UseStaticServiceTest() { PowerMockito.mockStatic(StaticService.class); PowerMockito.when(StaticService.doStaticWithParams(OBJECT_PARAM)).thenReturn(RETURN_STRING); } @Test public void useStaticTest() { String result = useStaticService.useStatic(OBJECT_PARAM); PowerMockito.verifyStatic(); StaticService.doStatic(); PowerMockito.verifyStatic(); StaticService.doStaticWithParams(OBJECT_PARAM); assertEquals(RETURN_STRING, result); } } 


рд╕реНрдерд┐рд░ рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @RunWith рдФрд░ @PrepareForTest рдПрдиреЛрдЯреЗрд╢рди рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдирдП рдирд┐рд░реНрджреЗрд╢ рдХреНрдпрд╛ рд╣реИрдВ:
PowerMockito.mockStatic (рдХрдХреНрд╖рд╛ <?> рдкреНрд░рдХрд╛рд░) - рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╡рд░реНрдЧ рдореЗрдВ рд╕рднреА рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдХрд▓реА рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЖрдк рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдХрд▓реА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдХреИрд╕реЗ - рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╕рдордЭ;)
PowerMockito.when (T methodCall) .thenReturn (returnValue) - рдирд┐рд░реНрдорд┐рдд рд╕реНрдЯрдм рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдорд╛рдирдХ рддрд░реАрдХрд╛ рд╣реИред
PowerMockito.verifyStatic () - рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдЯреИрдЯрд┐рдХ рдореЗрдердб рдХреЙрд▓ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХреНрд╕рдЯрд░реНрдорд╛рдЧреЗрд╕реНрд╡рд╛рдЗрд╕.рдСрдбрд╕реНрдЯреИрдЯрд┐рдХ () - рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдХ рдФрд░ рдмрдврд╝рд┐рдпрд╛ рдкрд╛рд╡рд░рдореЙрдХ рдлреАрдЪрд░ рдирдИ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдордЬрд╛рдХ рдмрдирд╛рдирд╛ рд╣реИред рдЗрд╕ рдЧреЛрд▓рд╛рдХрд╛рд░ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 // ,    public final class ExternalServiceFactory { public ExternalService createExternalService() { return new ExternalService(); } } //  ,        public class InternalService { private final ExternalServiceFactory externalServiceFactory; public InternalService(final ExternalServiceFactory externalServiceFactory) { this.externalServiceFactory = externalServiceFactory; } public void doWork() { externalServiceProvider.createExternalService.doMegaWork(); } } // , ,  @RunWith(PowerMockRunner.class) @PrepareForTest({ ExternalServiceFactory.class, ExternalService.class }) public class InternalServiceTest { private final ExternalService externalService = PowerMockito.mock(ExternalService.class); private final ExternalServiceFactory externalServiceFactory; private final InternalService internalService; public InternalServiceTest() throws Exception { PowerMockito.whenNew(ExternalService.class) .withNoArguments() .thenReturn(externalService); externalServiceFactory = new ExternalServiceFactory(); internalService = new InternalService(externalServiceFactory); } @Before public void before() { Mockito.reset(externalService); } @Test public void doWorkTest() { internalService.doWork(); Mockito.verify(externalService).doMegaWork(); } } 


PowerMockito.whenNew (рд╡рд░реНрдЧ <?> рдкреНрд░рдХрд╛рд░) .withNoArguments ()ред рддрдм рдкреБрдирд░реНрдЬрдиреНрдо (рдЙрджрд╛рд╣рд░рдг) рдХрд╛ рдирд┐рд░реНрдорд╛рдг PowerMock рдХреЛ рдирд┐рд░реАрдХреНрд╖рдг рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЬрд┐рд╕ рд╡рд╕реНрддреБ рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рдирдХрд▓реА рд╡рд╕реНрддреБ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИ, рдЙрд╕реЗ рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рднреА рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд╕реНрддреБ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЖрдВрд╢рд┐рдХ рдирдХрд▓реА (рдЬрд╛рд╕реВрд╕) рдФрд░ рдлрд┐рд░ рдЙрд╕рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рднреА рдЬрд╛рдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

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

Source: https://habr.com/ru/post/In172239/


All Articles