已发表的技术专栏
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
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/cfc9f8f5a6f03d67a0b0e7f957b7b521.png#pic_center)
该插件主要是为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类型的接口文件 |
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2f9801bb4326bd280e7a06978bdcc3f0.png#pic_center)
3.3、为test_grpc.pb.go文件创建单元测试用例 |
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d735225a14e8a48b5d131784abdb0d58.png#pic_center)
根据自己的实际情况,可能需要注意包名设置。
init_test.go, xxx_test.go文件就是xxx_grpc.pb.go文件的单元测试。
4、protoc-gen-go-test插件源码介绍 |
4.1、protoc-gen-go-test插件的入口 |
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5749632f54788ad5de228712c1937565.png#pic_center)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8c04d7673a5fa57ca22334723244ff98.png#pic_center)
4.2、run方法介绍(负责生成init_test.go文件和test_test.go文件) |
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/52454f2affe75c0c3afdbd628db69808.png#pic_center)
4.2.2、generateInitFile方法介绍 |
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9c156b64a6d25c2d7dcc6162846d7377.png#pic_center)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a4016b2af67172b27a5672facde2ce5a.png#pic_center)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/bd0b695af2bbd81d6b7aa8716b9b2607.png#pic_center)
代码并不是非难,就不解释了。
下一篇文章
Protobuf 编码解决的是什么问题?以及Protobuf的编码结构介绍?