测试不同包装中的方法

时间:2018-10-15 10:34:00

标签: go

在编写测试用例时,我发现了两个问题:

  1. 共有3个测试文件,其中one_test.gotwo_test.go可以添加到server_suites_test.go中,并且运行良好。但是three_point_one_test.go的功能无法添加到server_suites_test.go中,因为无法导入_test.go

  2. one_test.gotwo_test.go使用由server_test.go创建的gRPC客户端对象。实际上,server_test.go创建了一个gRPC服务器和一个客户端,其他测试用例都使用了该客户端。当前three_point_one_test.go无法访问该客户端。因此,为解决此问题,每次运行此测试时,我都会创建一个客户端。

项目结构(BTW不完整!)

> tree /f
Folder PATH listing for volume Windows
Volume serial number is 1C92-17A5
C:.
└───data
    │   one.go
    │   one_test.go
    │   two.go
    │   two_test.go
    │   server.go
    │   server_suites_test.go
    │   server_test.go
    │   
    └───three
            three_point_one.go
            three_point_one_test.go

server_suites_test.go

package data

import (
    "testing"
    "someproj/three"
)

func TesOne(t *testing.T) {
    t.Run("One", testOne) //from one_test.go
}

func TestTwo(t *testing.T) {
    t.Run("Two", testTwo) //from two_test.go
}

// Below code cannot be compiled -START
func TestThreePointOne(t *testing.T) {
    t.Run("ThreePointOne", three.TestThreePointOne) //cannot import this function
}
// Below code cannot be compiled -END

是否可以将子包中存在的其他测试添加到测试套件中?

1 个答案:

答案 0 :(得分:1)

  

是否可以将子包中存在的其他测试添加到测试套件中?

否。

测试不是软件包的一部分。由于您只能导入整个程序包,而测试不属于其中一部分,因此您根本无法执行。不要再考虑“子程序包”了:没有这样的事情。所有软件包都是相同的,并且它们的文件系统位置无关紧要(内部软件包和供应商除外)。