Dubbo的单元测试

Dubbo的单元测试
近期在写项目的单元测试,Service层全是调用Dubbo的,之前也没做过这方面的积累,现在将它记下,分享一下。

测试的Service层

接口IAppService:

public interface IAppService {
    Object AppList(InsightOptions options);
    List delete(List<String> CIIds);
}

实现类AppServiceImpl :

public class AppServiceImpl implements IAppService {
    @DubboReference(version = "1.0.0", timeout = 60000, check = false)
    private MdcCmdbApi mdcCmdbApi;//调用dubbo接口
    @Override
    public Object AppList(InsightOptions options) {
    ...
      return mdcCmdbApi.queryAppList(options);
}
    @Override
    public List delete(InsightOptions options) {
    ...
	List list =mdcCmdbApi.batchDeleteCiDataById(options);
	return list ;
}

单元测试
首先模拟调用dubbo的接口数据,先实现dubbo接口

@Slf4j
@Service
public class MdcCmdbApiMock implements MdcCmdbApi {

    @Override
    public PageableData<CiDto> queryAppList(CommonReq commonReq) {
        List<CiDto> content = new ArrayList();
        CiDto ciDto = new CiDto();
        ciDto.setId("222");
        ciDto.setParentId("999");
        CiDto ciDto1 = new CiDto();
        ciDto1.setId("333");
        ciDto1.setParentId("555");
        PageableData.PageableDataBuilder<CiDto> pagebuilder = PageableData.builder();
        PageableData<CiDto> pageableData = pagebuilder.build();
        pageableData.setPage(1);
        pageableData.setTotal(22);
        pageableData.setPageSize(22);
        pageableData.setContent(content);
        return pageableData;
    }
    
   @Override
    public List<OptStatusResp> batchDeleteCiDataById(List<IdReq> list) {
        List<OptStatusResp> list1 = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            OptStatusResp optStatusResp =
                    new OptStatusResp(list.get(i).getId(), 0);
            list1.add(optStatusResp);
        }
        return list1;
    }

测试Service层

@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(classes = AppserverBizApplicationTest.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class AppServiceTest {
    @BeforeClass
    public static void setSystemPros() {
        System.setProperty("spring.config.location", "../config/main/,../config/test/,src/test/resources/");
    }
    
    @InjectMocks
    @Autowired
    private AppServiceImpl iAppServiceImp;//要测试的Service层
    
    @Autowired
    MdcCmdbApiMock mdcCmdbApiMock; //dubbo mock的数据

//在执行Service层之前先初始化dubbo的数据,并将Service的引用dubbo的接口替换成mock的实现
    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        MockitoAnnotations.initMocks(mdcCmdbApiMock);//初始化dubbo mock的数据
        ReflectionTestUtils.setField(iAppServiceImp,"mdcCmdbApi",mdcCmdbApiMock);//调用Service层的代码,将dubbo的调用函数替换成已经初始化的函数
    }
    @Test
    public void AppList() {
        InsightOptions options = new InsightOptions();
        options.setPageSize(22);
        options.setPageIndex(1);
        Object appList = iAppServiceImp.AppList(getOptions());
        Assert.assertNotNull(appList);
    }
    @Test
    public void AppDelete() {
        List list = new ArrayList();
        list.add("1122");
        List delete = iAppServiceImp.delete(list);
        Assert.assertNotNull(delete);
    }
}

项目文件位置:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值