Gin和grpc搭建-学习Go语言

安装grpc

如果你遇到这样的错误

package google.golang.org/grpc: unrecognized import path "google.golang.org/grpc"(https fetch: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

解决方案,采用最新github的地址。

git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc
git clone https://github.com/golang/net.git $GOPATH/src/golang.org/x/net
git clone https://github.com/golang/text.git $GOPATH/src/golang.org/x/text
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
git clone https://github.com/google/go-genproto.git $GOPATH/src/google.golang.org/genproto

cd $GOPATH/src/
go install google.golang.org/grpc

继续报错:

google.golang.org/grpc/internal/channelz/types_linux.go:26:2: cannot find package "golang.org/x/sys/unix" in any of:
    /usr/local/go/src/golang.org/x/sys/unix (from $GOROOT)
    /go/src/golang.org/x/sys/unix (from $GOPATH)

解决方案,依然采用github的地址。

git clone https://github.com/golang/sys.git $GOPATH/src/golang.org/x/sys

gin框架

如果你想执行gin的example的例子。

go run grpc/server.go
grpc/server.go:7:2: cannot find package "github.com/gin-gonic/gin/examples/grpc/pb" in any of:
    /usr/local/go/src/github.com/gin-gonic/gin/examples/grpc/pb (from $GOROOT)
    /go/src/github.com/gin-gonic/gin/examples/grpc/pb (from $GOPATH)

解决方案,拉取gin的包。

go get -u github.com/gin-gonic/gin

参考链接

  1. golang安装gRpc

单元测试-学习Go语言

实现

采用自身的testing包实现。

踩坑

单元测试和源文件必要放在同一个目录下,才可以正常执行。

Go PHPUnit
*_test文件和源文件一起 必须 任意
断言 第三方库 支持
mock 支持 支持

语法

执行单元测试

go test -v -cover=true ./src/rpc/client_test.go ./src/rpc/client.go

简单的断言

/*
* @Author: GeekWho
* @Date:   2018-07-20 11:33:43
* @Last Modified by:   GeekWho
* @Last Modified time: 2018-07-20 12:29:33
*/
package rpc

import (
    "testing"

    "github.com/stretchr/testify/assert"
)

func TestRun(t *testing.T) {
    assert.Equal(t, "rpc", "rpc")
}