Spring+Dubbo+TestNG接口测试初探

最近因工作原因,需要测试dubbo接口,通过公司同事写的框架,再结合度娘的帮助,自己做了一些总结记录。

通过下文意在说明如何搭建一个spring + dubbo + testng的测试环境,并完成一个简单的dubbo接口测试用例。

一、在Idea中新建一个maven工程

二、在pom.xml中添加相关依赖

    <dependencies>
        <!-- Spring框架依赖:用于构建Spring容器 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.5.RELEASE</version>
        </dependency>

        <!-- Spring单元测试依赖:用于测试类启动spring容器 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.1.5.RELEASE</version>
            <scope>test</scope>
        </dependency>

        <!-- dubbo依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.2</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- 引入相应工程的jar包:*根据工程不同具体填入相应值-->
        <dependency>
            <groupId>com.*.*</groupId>
            <artifactId>*</artifactId>
            <version>*</version>
        </dependency>

        <!-- testng依赖:测试框架-->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.3</version>
            <scope>test</scope>
        </dependency>

        <!-- fastjson依赖:主要用于接口返回结果中解析json对象 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.54</version>
        </dependency>

        <!-- 流式断言器依赖:要比于junit和testng中的断言,assertj的api更强大-->
        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <version>3.11.1</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

 三、Dubbo服务spring配置(resources目录下新建一个bean.xml文件)

由于测试过程是RPC(远程调用接口)的过程,测试项目相当于服务消费方Consumer,开发项目相当于服务提供方Provider,

所以测试只需要进行消费方的spring配置。xml的模板可以直接从要测试的dubbo接口对应的应用中拷贝;

<dubbo:application>必须声明,name和owner的值随便取(当然要取有一定意义的),没有对应关系;

<dubbo:reference>中url对应dubbo接口对应的dubbo服务地址和端口,

          id唯一即可,

          interface是dubbo服务的全限定类名

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

        <dubbo:application name="x1_consumer" owner="x2_consumer"/>
        <dubbo:reference
                url="dubbo://192.168.0.100:20860"
                id="testService"
                interface="com.*.*.service.TestService"
                timeout="30000"/>

</beans>

四、编写测试脚本

import com.*.*.TestService;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import javax.annotation.Resource;

//测试类需要继承AbstractTestNGSpringContextTests,如果不这么做测试类是无法启动Spring容器的
@ContextConfiguration(locations = "classpath:bean.xml") 
public class TestBase extends AbstractTestNGSpringContextTests {
    @Resource
    public TestService testService;

}

测试类需要继承AbstractTestNGSpringContextTests,如果不这么做测试类是无法启动Spring容器的

使用了[@ContextConfiguration]是为了加载被测试的Bean

import com.alibaba.fastjson.JSON;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;

public class TestSaveData extends TestBase {
private TestDTO testDTO = new TestDTO(); private List<Integer> categorys = new ArrayList<Integer>(); @Test public void TestSaveData_nameIsNull() { categorys.add(1); testDTO.setCategorys(categorys); ResponseDTO res = TestService.saveData(testDTO); System.out.println(JSON.toJSONString(res)); assertThat(res.getCode()).as("返回状态码").isEqualTo("2") .isBetween("1","2"); assertThat(res.getMessage()).isEqualTo("XX名称不能为空!"); assertThat(res.isSuccess()).isFalse(); } }

 

转载于:https://www.cnblogs.com/janson071/p/11309716.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Doe 发布 [V1.0.0] 前段时间排查某问题的时候,想要快速知道某些dubbo接口(三无)的响应结果,但不想启动项目(因为这些项目不是你负责的,不会部署而且超级笨重),也不想新建一个dubbo客户端项目(占地方),也不想开telnet客户端连接口(麻烦而且有限制)。所以扣了dubbo的netty模块源码,封装了个收发客户端集成一个工具,可以快速调试dubbo接口。源码地址:https://github.com/VIPJoey/doe 极简模式 普通模式 目录结构 mmc-dubbo-api 接口项目,主要用于测试。 mmc-dubbo-provider dubbo提供者项目,主要用于测试。 mmc-dubbo-doe 主项目,实现dubbo接口调试。 deploy 部署文档 功能特性 极简模式:通过dubbo提供的telnet协议收发数据。 普通模式:通过封装netty客户端收发数据。 用例模式:通过缓存数据,方便下一次操作,依赖普通模式。 增加依赖:通过调用maven命令,下载jar包和热加载到系统,主要用来分析接口方法参数,主要作用在普通模式。 依赖列表:通过分析pom文件,展示已经加载的jar包。 其它特性 springboot 整合 redis,支持spring el 表达式。 springboot 整合 thymeleaf。 springboot 整合 logback。 netty rpc 实现原理。 开发环境 jdk 1.8 maven 3.5.3 dubbo 2.6.1 lombok 1.16.20 idea 2018 windows 7 安装步骤 安装jdk 安装maven,并设置好环境变量,仓库目录。 进入mmc-dubbo-api目录,执行mvn clean install命令,省api的jar包。 进入mmc-dubbo-doe目录,执行mvn clean install 命令,在target目录生成dubbo-doe-1.0.0-RELEASE.jar 在F盘(可以任意盘)创建目录F:\app\doe 把dubbo-doe-1.0.0-RELEASE.jar拷贝到F:\app\doe 把deploy目录中的所有文件拷贝到F:\app\doe 如果您电脑安装了git bash,可以在bash窗口运行 ./deploy.sh start,否则如果没有安装git bash,只能打开cmd切换到F:\app\doe目录,然后执行java -jar dubbo-doe-1.0.0-RELEASE.jar --spring.profiles.active=prd 打开浏览器,访问地址:http://localhost:9876/doe/home/index 全剧终

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值