PowerMockito使用

文章详细描述了如何在PowerMockito中进行单元测试,包括引入依赖、使用@RunWith(PowerMockRunner)、创建mock对象以及模拟方法调用。通过两个测试用例展示了错误和成功场景下的处理。
摘要由CSDN通过智能技术生成

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);
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值