Junit 方法测试dubbo接口
公司采用dubbo开源框架作为底层的rpc通信技术组件,在实际的工作中,需要测试外部团队的dubbo接口是否工作正常,测试的主要目的确认两个问题:
1、接口有无明显的代码 bug
2、基础的通信网络是否正常工作(即能否ping是否正常)
实际项目中有很多依赖dubbo 接口是外部提供的,使用 @SpringBootTest 单元测试会导致项目再启动的过程中注入各种依赖,且启动时间比较长。因此使用junit 单独测试dubbo接口,可以加快工作效率,代码如下,mark一下:
//dubbo 接口定义
import java.util.List;
public interface InterfaceAPI {
List<Object> getDataList(Long userId, Long orderId);
}
//dubbo 接口实现
import com.alibaba.dubbo.config.annotation.Service;
import java.util.Arrays;
import java.util.List;
@Service(version = "1.0.0")
public class InterfaceAPIProvider implements InterfaceAPI {
@Override
public List<Object> getDataList(Long userId, Long orderId){
/***
业务 处理
***/
return Arrays.asList();
}
}
/**
* 使用 main 方法 测试
*/
public class JunitTestDubbo {
@Test
public void test() {
// 当前应用配置
ApplicationConfig application = new ApplicationConfig();
application.setName("test-consumer");
application.setOwner("owner");
// 连接注册中心配置
RegistryConfig registry1 = new RegistryConfig();
registry1.setAddress("zookeeper://xxx1:2181");
RegistryConfig registry2= new RegistryConfig();
registry2.setAddress("zookeeper://xxx2:2181");
RegistryConfig registry3 = new RegistryConfig();
registry3.setAddress("zookeeper://xxx3:2181");
//InterfaceAPI 为dubbo接口定义
ReferenceConfig<InterfaceAPI> reference = new ReferenceConfig();
reference.setApplication(application);
reference.setRegistries(Arrays.asList(registry1,registry2,registry3));
reference.setInterface(InterfaceAPI.class);
//接口定义的版本号
reference.setVersion("1.0.0");
InterfaceAPI interfaceAPI = reference.get();
List result = interfaceAPI.getDataList(1192161l,4670l);
System.out.println("===== result " + JSON.toJSONString(result));
}
}