Protobuf 介绍与实战47:protoc-gen-go-test插件介绍

已发表的技术专栏
0 grpc-go、protobuf、multus-cni 技术专栏 总入口

1 grpc-go 源码剖析与实战 文章目录

2 Protobuf介绍与实战 图文专栏 文章目录

3 multus-cni 文章目录(k8s多网络实现方案)

4 grpc、oauth2、openssl、双向认证、单向认证等专栏文章目录

1、protoc-gen-go-test插件源码下载

此插件是从https://github.com/gotomicro/ego框架里抽取了的prototobuf插件用例;

源码已经上传到百度网盘了。

链接: https://pan.baidu.com/s/1RNDYSmX38xFc_O7iDeGdcw 提取码: t3w6

在这里插入图片描述

2、该插件的目的、作用、要求

2.1、目的,作用?

该插件主要是为xxx_grpc.pb.go文件创建单元测试用例代码;

2.2、在使用protoc-gen-go-test插件时主要有两个要求:
  • 要求proto文件里必须声明了rpc服务;如果没有声明,也不会报错,创建的测试用例没有什么用而已。
  • 已经通过,如,protoc --go-grpc_out=. xxx.proto命令,为xxx.proto文件创建了rpc类型的接口xxx_grpc.pb.go文件了;
    • 因为protoc-gen-go-test插件需要xxx_grpc.pb.go文件作为参数。

3、如何通过protoc-gen-go-test插件为proto文件生成单元测试用例

3.1、test.proto测试样例
syntax = "proto3";

option go_package="pb/plugin/test";

message Student {
    string Name = 1;
    int32  age = 2;
}
message HelloReply {
  string message = 1;
}

service Greeter {
    rpc SayHello(Student) returns (HelloReply) {}
}

跟其他rpc类型的proto文件没有什么特别之处。

3.2、为test.proto创建rpc类型的接口文件

在这里插入图片描述

3.3、为test_grpc.pb.go文件创建单元测试用例

在这里插入图片描述

根据自己的实际情况,可能需要注意包名设置。

init_test.go, xxx_test.go文件就是xxx_grpc.pb.go文件的单元测试。

4、protoc-gen-go-test插件源码介绍

4.1、protoc-gen-go-test插件的入口

在这里插入图片描述

在这里插入图片描述

4.2、run方法介绍(负责生成init_test.go文件和test_test.go文件)

4.2.1、run方法介绍

在这里插入图片描述

4.2.2、generateInitFile方法介绍

在这里插入图片描述

4.2.3、generateFile方法介绍

在这里插入图片描述

在这里插入图片描述

代码并不是非难,就不解释了。

下一篇文章

Protobuf 编码解决的是什么问题?以及Protobuf的编码结构介绍?


版权声明:本文为u011582922原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。