如何使用Go的测试工具测试Gin服务器?

时间:2018-08-07 03:02:59

标签: rest unit-testing go server

我已经使用Gin在Go中实现了Rest API,目前我正在尝试使用标准的go测试工具(去测试-coverprofile = coverage.out)对其进行测试。实现此API服务器的代码看起来像这样,并且是一个名为app.go的文件。

func main(){
    runApp()
}

func runApp(){

    r := gin.Default()

    r.GET("/path", serverLogicFunction(c *gin.Context) {
        // Server logic
    })

    // Multiple methods and paths are defined and not included here

    r.Run() // listen and serve on 0.0.0.0:8080
}

问题是,当我使用Go的测试工具运行测试时,我不确定如何对上述定义的serverLogicFunction之类的单元测试或集成测试功能进行单元化,以使其显示为应用程序覆盖配置文件中覆盖部分的一部分。目前,我对app.go的测试驻留在app_test.go中,它们基本上是通过由os系统调用产生的进程(因为app.exe是无限阻止进程)运行app.exe(服务器),然后测试api端点使用Go的http库。

问题是,如果我使用“ go tool cover -html = coverage.out”查看封面配置文件,由于我没有真正调用runApp(),app.go中的行不会显示为被覆盖通过测试代码实现功能(因为我是通过os调用生成它的)。

我要解决这个错误吗?否则我应该如何对应用程序进行单元测试?任何输入将不胜感激。

0 个答案:

没有答案