<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(); } }
// 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); } }
// , 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(); } }
Source: https://habr.com/ru/post/172239/
All Articles