PowerMockito使用案例
PowerMockito的一个使用案例,记录下
pom.xml引入依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>2.0.2</version>
</dependency>
代码案例
@RunWith(PowerMockRunner.class)
@PrepareForTest({LiveSyncOverriddenTasklet.class})
public class LiveSyncOverriddenTaskletTest {
private LiveSyncOverriddenTasklet liveSyncOverriddenTasklet = new LiveSyncOverriddenTasklet();
private static final String KEY = "sync.overridden.service.enable";
private String datasetIdKey = "datasetIdSync";
@Mock
private ApplicationConfiguration appConfig;
@Mock
private Configuration config;
@Mock
private DsmRestTemplateService<JobExecution, ApiResponse> mockTemplate;
@Mock
private JobLauncher jobLauncher;
private ChunkContext chunkContext;
private StepContribution stepContribution;
@Before
public void setUp(){
HashMap<String, JobParamter> jobParamterMap = new HashMap<String, JobParamter>();
jobParamterMap.put("processRunId", new JobParamter("005"));
JobParamters jobParamters = new JobParamters(jobParamterMap);
JobInstance jobInstance = new JobInstance(1L, jobParamters, "test");
JobExecution jobExecution = new JobExecution(jobInstance, 1l);
StepExecution stepExecution = new StepExecution("test", 1);
stepContribution = new StepContribution(stepExecution);
chunkContext = new ChunkContext(new StepContext(stepExecution));
liveSyncOverriddenTasklet.setAppConfig(appConfig);
liveSyncOverriddenTasklet.setConfig(config);
}
@Test
public void test_errorCase(){
Map<String, Object> jobResponse = new LinkedHashMap<>();
jobResponse.put("id", 1l);
ApiResponse response = ApiResponse.fail(1, "get request failed");
response.put("status", "FAIL");
PowerMockito.whenNew(DsmRestTemplateService.calss).withArgument(ApiResponse.calss).thenReturn(mockTemplate);
PowerMockito.when(mockTemplate.postRequest(any(JobExecutionDto.class), anyString(), anyString))).thenReturn(ApiRespone.success(jobResponse));
liveSyncOverriddenTasklet.setDatasetIdKey("datasetIdSync");
PowerMockito.when(liveSyncOverriddenTasklet.getConfig().getBoolean(KEY, false)).thenReturn(true);
try{
liveSyncOverriddenTasklet.execute(stepContribution, chunkContext);
}catch (Exception e){
Assert.assertrue(e instanceof RavenApplicationException);
}
}
@Test
public void test_successCase(){
Map<String, Object> jobResponse = new LinkedHashMap<>();
jobResponse.put("id", 1l);
ApiResponse response = ApiResponse.fail(1, "get request failed");
response.put("status", "COMPLETED");
PowerMockito.whenNew(DsmRestTemplateService.calss).withArgument(ApiResponse.calss).thenReturn(mockTemplate);
PowerMockito.when(mockTemplate.postRequest(any(JobExecutionDto.class), anyString(), anyString))).thenReturn(mockTemplate);
liveSyncOverriddenTasklet.setDatasetIdKey("datasetIdSync");
PowerMockito.when(liveSyncOverriddenTasklet.getConfig().getBoolean(KEY, false)).thenReturn(true);
try{
liveSyncOverriddenTasklet.execute(stepContribution, chunkContext);
}catch (Exception e){
Assert.assertrue(e instanceof RavenApplicationException);
}
}
}