阿里HSF接口 springboot 单元测试consumer的方法

1、新建一个springboot项目,添加maven依赖


        
            com.alibaba.edas
            edas-sdk
            1.5.4
        
        
            com.taobao.hsf
            LightApi
            1.0.5
            test
        

        
            commons-lang
            commons-lang
            ${commons-lang.version}
        

        
            com.alibaba
            fastjson
            ${fastjson.version}
        

2、创建hsf-consumer.xml 配置好要测试的hsf接口

阿里HSF接口 springboot 单元测试consumer的方法_第1张图片


 
       
    
	
	

    
        
    

    

    
    
    

    
    
    

 

3、在生成的test目录下的测试类中写代码,

阿里HSF接口 springboot 单元测试consumer的方法_第2张图片

package com.kd.modeltest;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.kd.modelapi.api.IModelCenterService;
import com.kd.modelapi.api.TestService;
import com.kd.modelapi.common.ResponseDto;
import com.kd.modelapi.vo.TestUserVo;
import com.taobao.hsf.lightapi.ServiceFactory;
import com.taobao.hsf.standalone.HSFEasyStarter;
import com.taobao.hsf.standalone.util.ServiceUtil;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.context.junit4.SpringRunner;


@RunWith(SpringRunner.class)
@SpringBootTest
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class ModelTestApplicationTests {

    @Value("${hsf.version}")
    private String version;
    @Value("${hsf.group}")
    private String group;
    private static String service = "com.kd.modelapi.api.TestService";
    private static String provider = "testServiceProvider";
    private static String consumer = "testService";
    private static String consumerXml = "hsf-consumer.xml";
    private static String sarPath = "E:\\software\\taobao-tomcat-7.0.59\\deploy";

    private Logger logger = LoggerFactory.getLogger("ModelTestApplicationTests");

  

    /**
     * 通过HSFUnit进行单元测试  最简单测试
     */
    //@Test
    public void contextLoadsInit() {
        String consumer = "testService";
        HSFEasyStarter.start(sarPath, "");//在用到consumer bean前启动hsf
        String springResourcePath = consumerXml;
        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(springResourcePath);
        TestService testService = (TestService) ctx.getBean(consumer);
        ServiceUtil.waitServiceReady(testService);
        //add
//        TestUserVo tuv1 = new TestUserVo();
//        tuv1.setOffset(100);
//        tuv1.setUserName("zjy");
//        tuv1.setUserParentName("zzz");
//        tuv1.setUserDesc("this is a people");
//        ResponseDto responseVo1 = testService.addTestUser(tuv1);
//        System.out.println(responseVo1.toString());
        //query
        TestUserVo tuv2 = new TestUserVo();
        tuv2.setId(3);
        ResponseDto responseVo2 =  testService.queryTestUser(tuv2);
        System.out.println(responseVo2);
    }

    /**
     * 通过阿里提供的lightApi代码进行单元测试
     * 目前无法使用 需要更换sar包
     */
	//@Test
    public void lightApi() {
        // 这里设置Pandora地址,参数是sar包所在目录,如这里我的sar包地址是/Users/Jason/Work/AliSoft/PandoraSar/DevSar/taobao-hsf.sar,则只取前面的地址即可
        final ServiceFactory factory = ServiceFactory
                .getInstanceWithPath(sarPath);
        // 进行服务发布(若有发布者,无需再这里写)
		/*factory.provider(provider)// 参数是一个标识,初始化后,下次只需调用provider("helloProvider")即可拿出对应服务
				.service(service)// 接口全类名
				.version(version)// 版本号
				.group(group)// 组别
				.impl(new UserServiceImpl())// 对应的服务实现
				.publish();// 发布服务,至少要调用service()和version()才可以发布服务*/

        // 进行服务消费
        factory.consumer(consumer)// 参数是一个标识,初始化后,下次只需调用consumer("helloConsumer")即可直接拿出对应服务
                .service(service)// 接口全类名
                .version(version)// 版本号
                .group(group)// 组别
                .subscribe();
        // 同步等待地址推送,最多6秒。
        try {
            factory.consumer(consumer).sync();
        }catch (Exception e){
            e.printStackTrace();
        }
        // 用ID取出对应服务,subscribe()方法返回对应的接口
        TestService testService = (TestService) factory.consumer(consumer).subscribe();
        // 调用服务方法
        //testService.testHsf();
    }

    /**
     * 通过阿里提供的lightApi包,使用xml进行单元测试
     * 目前无法使用
     */
	//@Test
    public void xmlTest(){
        //XML 方式加载服务提供者
//		new ClassPathXmlApplicationContext("hsf-provider-beans.xml");
        //XML 方式加载服务消费者
        ClassPathXmlApplicationContext consumerContext=
                new ClassPathXmlApplicationContext("hsf-consumer.xml");
        //获取 Bean
        TestService testService=(TestService) consumerContext.getBean(consumer);
        //服务调用
        //testService.testHsf();
    }

}

注意 sar路径是指向你本地的sar包路径,更换sar包可以用不同的测试方法,资源可以到我分享的资源去下载。

 

你可能感兴趣的:(springboot)