patterngoMajor
go test can't find function in a same package
Viewed 0 times
packagefunctionsamefindcantest
Problem
The directory structure is :
t1.go
t1_test.go
Invoke go test from command line at dir
error:
but the function is there
thanks for any hints
src
src/pkg
src/pkg/t1.go
src/pkg/t1_test.got1.go
package pkg
import (
"fmt"
)
func SayHI(){
fmt.Println("this is t1")
}t1_test.go
package pkg
import (
"testing"
)
func TestXYZ(t *testing.T) {
SayHI()
}Invoke go test from command line at dir
src/pkggo test t1_test.goerror:
./t1_test.go:8: undefined: SayHI
FAIL command-line-arguments [build failed]but the function is there
thanks for any hints
Solution
It is working as intended.
In other words:
To select which tests to run use the
or
jnml@fsc-r630:~/src/pkg$ go help test
usage: go test [-c] [-i] [build flags] [packages] [flags for test binary]
'Go test' automates testing the packages named by the import paths.
It prints a summary of the test results in the format:
ok archive/tar 0.011s
FAIL archive/zip 0.022s
ok compress/gzip 0.033s
...
followed by detailed output for each failed package.
'Go test' recompiles each package along with any files with names matching
the file pattern "*_test.go". These additional files can contain test functions,
benchmark functions, and example functions. See 'go help testfunc' for more.
By default, go test needs no arguments. It compiles and tests the package
with source in the current directory, including tests, and runs the tests.
The package is built in a temporary directory so it does not interfere with the
non-test installation.
In addition to the build flags, the flags handled by 'go test' itself are:
-c Compile the test binary to pkg.test but do not run it.
-i
Install packages that are dependencies of the test.
Do not run the test.
The test binary also accepts flags that control execution of the test; these
flags are also accessible by 'go test'. See 'go help testflag' for details.
For more about build flags, see 'go help build'.
For more about specifying packages, see 'go help packages'.
See also: go build, go vet.
jnml@fsc-r630:~/src/pkg$In other words:
go testis okay.
go test pkg(assuming $GOPATH is ~ and the package is in ~/src/pkg) is okay.
go test whatever_test.gois not okay as that is not supported as documented above.
To select which tests to run use the
-run flag (where the ` is interpreted as having wildcards on either end, like ..`). For example$ go test -run Say # from within the package's directoryor
$ go test -run Say my/package/import/path # from anywhereCode Snippets
jnml@fsc-r630:~/src/pkg$ go help test
usage: go test [-c] [-i] [build flags] [packages] [flags for test binary]
'Go test' automates testing the packages named by the import paths.
It prints a summary of the test results in the format:
ok archive/tar 0.011s
FAIL archive/zip 0.022s
ok compress/gzip 0.033s
...
followed by detailed output for each failed package.
'Go test' recompiles each package along with any files with names matching
the file pattern "*_test.go". These additional files can contain test functions,
benchmark functions, and example functions. See 'go help testfunc' for more.
By default, go test needs no arguments. It compiles and tests the package
with source in the current directory, including tests, and runs the tests.
The package is built in a temporary directory so it does not interfere with the
non-test installation.
In addition to the build flags, the flags handled by 'go test' itself are:
-c Compile the test binary to pkg.test but do not run it.
-i
Install packages that are dependencies of the test.
Do not run the test.
The test binary also accepts flags that control execution of the test; these
flags are also accessible by 'go test'. See 'go help testflag' for details.
For more about build flags, see 'go help build'.
For more about specifying packages, see 'go help packages'.
See also: go build, go vet.
jnml@fsc-r630:~/src/pkg$$ go test -run Say # from within the package's directory$ go test -run Say my/package/import/path # from anywhereContext
Stack Overflow Q#14723229, score: 81
Revisions (0)
No revisions yet.