在 Go 專案執行測試前更換工作目錄

前言

在 Go 專案執行測試時,如果測試案例放在 test 資料夾中,工作目錄就會在 test 資料夾。專案中的資源有使用到相對路徑,就會無法存取,因此需要在執行測試前更換工作目錄。

做法

在所有測試案例執行前,更換工作目錄到專案的根目錄。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package model

import (
"os"
"testing"
)

func TestMain(m *testing.M) {
changeDirectory()
code := m.Run()
os.Exit(code)
}

func changeDirectory() {
_, file, _, _ := runtime.Caller(0)
dir := path.Join(path.Dir(file), "..") // 測試案例到根目錄的相對路徑
if err := os.Chdir(dir); err != nil {
log.Fatalln(err)
}
}