[go] Go 언어에서 데이터베이스 연동 테스트 작성 방법

Go 언어는 간단하면서도 효율적인 프로그래밍을 지원하는 언어로, 데이터베이스와의 연동도 간단합니다. 이번 포스트에서는 Go 언어에서 데이터베이스(MySQL)와의 연동 및 테스트를 작성하는 방법을 알아보겠습니다.

필요한 패키지 설치

먼저 Go 언어에서 MySQL과의 연동을 위해 database/sqlgithub.com/go-sql-driver/mysql 패키지를 설치해야 합니다. 아래 명령어로 패키지를 설치합니다.

go get -u github.com/go-sql-driver/mysql

데이터베이스 연결 및 쿼리 실행

package main

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    // 데이터베이스 연결
    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/dbname")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    // 쿼리 실행
    rows, err := db.Query("SELECT * FROM users")
    if err != nil {
        panic(err.Error())
    }
    defer rows.Close()

    // 결과 출력
    for rows.Next() {
        var id int
        var name string
        err = rows.Scan(&id, &name)
        if err != nil {
            panic(err.Error())
        }
        fmt.Println(id, name)
    }
}

위의 예시 코드는 Go 언어에서 MySQL과의 연결 및 간단한 조회 쿼리를 실행하는 방법을 보여줍니다.

테스트 작성

테스트 코드를 작성할 때는 testing 패키지를 사용하여 단위테스트 또는 통합테스트를 작성할 수 있습니다.

package main

import (
	"database/sql"
	"testing"
	_ "github.com/go-sql-driver/mysql"
)

func TestDBConnection(t *testing.T) {
    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/dbname")
    if err != nil {
        t.Fatalf("Error connecting to database: %s", err)
    }
    defer db.Close()
    
    err = db.Ping()
    if err != nil {
        t.Fatalf("Error pinging database: %s", err)
    }
}

위의 코드는 데이터베이스 연결을 테스트하는 예시 코드입니다.

이제, Go 언어에서 MySQL과의 데이터베이스 연동 및 테스트 작성에 대한 기본적인 내용을 살펴봤습니다. 추가적으로, ORM(Object-Relational Mapping) 라이브러리를 사용하여 더 쉽고 편리하게 데이터베이스와 연동하는 방법도 찾아보시길 권장드립니다.

참고 자료