Ich habe zwei Dateien in einem Paket namens db
, von denen eine einige nicht exportierte Variablen definiert hat. Ein weiteres ist eine Testdatei und müßte diese Variablen verwenden, etwa so:Nicht definierte Variablen innerhalb eines Pakets während Build
(Dies ist die Struktur des Projektes)
$GOPATH/src/gitlab.com/myname/projectdir
├── main.go
└── db
├── add.go
└── add_test.go
(Hier ist eine lapidare Variation der Dateien)
db/add.go
package db
func Add(x, y int) int {
return x + y
}
// some other functions that use a and b from `add_test.go`
db/add_test.go
package db
import (
"testing"
)
var (
a = 1
b = 2
)
// test function use variables from add.go
func testAdd(t *testing.T) {
result := add(a, b)
if result != 3 {
t.Error(err)
}
}
Laufen go test
innerhalb db/
Verzeichnis geführt, aber sobald ich go run main go
lief erzeugt es den folgenden Fehler:
db/add.go:: undefined: a
db/add.go:: undefined: b
Scheint, wie add.go
nicht a
und b
von add_test.go
während des Build finden.
main.go
package main
import (
"fmt"
"gitlab.com/myname/projectdir/db"
)
func main() {
res := db.Add(1, 2)
fmt.Println(res)
}
ist dies, weil add_test.go
nicht während des Build enthalten?
Nicht sicher, ich verstehe, was Sie vorschlagen. Schlagen Sie vor, ich verwende relativen Import wie './Db' in jeder Datei innerhalb' db'? – PieOhPah
Ihr Codebeispiel war unvollständig. Ich nahm an, dass 'projectDir' eine 'Paket-Hauptlaufzeit' ist, daher Ihre 'go run main.go'-Anweisung. Es befindet sich innerhalb dieses 'main.go' (und alles andere innerhalb dieses 'main'-Pakets), das auf Ihren db-Code mit' import' ./db "' verweist. Und stellen Sie sicher, dass alles in Ihrem '$ GOPATH/src /' ist. – eduncan911
Entschuldigung, ich habe die Projektstruktur hinzugefügt, um mehr Klarheit zu schaffen. – PieOhPah