已发表的技术专栏
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

该插件主要是为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文件生成单元测试用例 |
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.2、generateInitFile方法介绍 |



代码并不是非难,就不解释了。
下一篇文章
Protobuf 编码解决的是什么问题?以及Protobuf的编码结构介绍?