与真实数据库的集成测试

在集成测试中,我想检查代码如何与真实的数据库实例(Postgresql)一起使用。我不需要嘲笑它。它必须是一个真实的数据库。 如果我可以并行运行测试,那就太好了。 我的代码包含数据库事务。

要共享连接,我创建了一个db包:

package db

import (
    "flag"
    "fmt"

    "github.com/jmoiron/sqlx"
)

var cachedDBConn *sqlx.DB

func getconnection(host string,port uint16,user string,password string,databaseName string) (*sqlx.DB,error) {
    if cachedDBConn != nil {
        return cachedDBConn,nil
    }
    dbConnStr := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable",host,port,user,password,databaseName)
    cachedDBConn,err := sqlx.Open("postgres",dbConnStr)
    if err != nil {
        return nil,err
    }
    return cachedDBConn,nil
}

// allow to redefine connection settings for tests in CI
var (
    dbHost     = flag.String("test.dbhost","localhost","Test Database host address")
    dbPort     = flag.Int("test.dbport",5432,"Test Database port number")
    dbUser     = flag.String("test.dbuser","ccm_test","Test Database user name")
    dbPassword = flag.String("test.dbpass","Test Database user password")
    dbName     = flag.String("test.dbname","ezan_ccm_test","Test Database name")
)

// MustGetTestConnection panics if can't create connection
func MustGetTestConnection() (conn *sqlx.DB) {
    db,err := getconnection(*dbHost,uint16(*dbPort),*dbUser,*dbPassword,*dbName)
    if err != nil {
        panic(fmt.Sprintf("Failed to create DB connection: %v",err))
    }
    return db
}

我已经看到了temp schema fo Postgresa solution with revert fuction的解决方案

哪种方法更适合使用并行运行和事务处理?

james1229 回答:与真实数据库的集成测试

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3161318.html

大家都在问