testmain m.run()后的撕裂功能从未被调用



i具有以下测试代码,在其中我正在测试某些端点和数据库(mongodb(功能。我正在使用MGO软件包,并且每次访问数据库时都有一些抽象来获取新的会话副本。

package resolvers_test
import (
    //various imports here
)
func setup() {
    log.Println("ENTER SETUPn")
    customerIndex := mgo.Index{
        Key:        []string{"email"},
        Unique:     true,
        Background: true,
        Sparse:     true,
    }
    session := db.GetSession().Copy()
    defer session.Close()
    customerCollection := session.DB("testDB").C("customerCollection")
    customerCollection.EnsureIndex(customerIndex)
    log.Println("EXIT SETUP")
}
func shutdown() {
    log.Println("ENTER SHUTDOWNn")
    session := db.GetSession().Copy()
    defer session.Close()
    session.DB("testDB").DropDatabase()
    log.Println("EXIT SHUTDOWNn")
}
func TestMain(m *testing.M) {
    setup()
    code := m.Run()
    shutdown()
    os.Exit(code)
}

shutdown()函数中,我放置了一个据说应该删除测试数据库的代码,但是虽然setup()函数被调用(我知道,因为它创建了索引(shutdown()函数从未调用。有什么想法吗?

编辑:输入End End Exting Exting Setup((和ShutDown((和控制台日志时,我添加了日志语句。这些功能都是可以达到的。日志如下:

2018/02/10 09:09:54 ENTER SETUP
2018/02/10 09:09:55 EXIT SETUP
=== RUN   TestCreateCustomer
--- PASS: TestCreateCustomer (0.14s)
        a_customerProfile_test.go:108: Create Customer successful
=== RUN   TestCustomerProfile
--- PASS: TestCustomerProfile (0.27s)
        a_customerProfile_test.go:152: Customer Profile Test Successful
PASS
2018/02/10 09:09:55 ENTER SHUTDOWN
2018/02/10 09:09:55 EXIT SHUTDOWN

您在 setup()

中说明 defer session.Close()

因此,shutdown()中的session := db.GetSession().Copy()将获得一个新的会话,而无需选择任何DB。

使setup()TestMain()

中返回*mgo.Session和状态defer session.Close()

最新更新