我可以使用另一个软件包_test.go中一个软件包的_test.go文件中定义的测试函数吗?

时间:2019-09-22 21:08:52

标签: unit-testing go

我有一个数据库包。在db_test.go内部,我定义了MemoryDb()函数以返回内存数据库以进行测试。我可以在db_test.go中使用MemoryDb()很好,但我也想在其他软件包中使用它,即apkg的apkg_test.go。这似乎不起作用,对吗?

apkg_test.go

package apkg                                                                                                                                     

import (                                                                                                                                             
        "db"                                                                                                                                     
        "testing"                                                                                                                                                       
)                                                                                                                                                           

func TestHelloWorld(t *testing.T) {                                                                                                  
        _ = db.MemoryDb()                                                                                                                                
}    

db.go

package db                                                                                                                           

// Db struct                                                                                                                                     
type Db struct {                                                                                                                                                        
} 

db_test.go

package db                                                                                                                           

import "testing"                                                                                                                                 

func TestHelloWorld(t *testing.T) {                                                                                                                         
        _ = MemoryDb()
}

func MemoryDb() Db {
        return Db{}
}

我得到的错误

/tmp/go/src/db$ go test
PASS
ok      db      0.008s
/tmp/go/src/db$ cd ../apkg/
/tmp/go/src/apkg$ go test
$ apkg [apkg.test]
./apkg_test.go:9:6: undefined: db.MemoryDb
FAIL    apkg [build failed]

假设不允许这样做,因为它在另一个软件包的_test中,是否有办法从其他软件包中的其他_test文件进入另一个软件包的_test文件?我宁愿将MemoryDb排除在外,但仍将单独的_test.go文件保存在单独的程序包中,并使MemoryDb不在已部署的二进制文件中(将其保存在_test.go文件中)。

0 个答案:

没有答案