goテストが同じパッケージの関数を見つけ出せない
2023-12-09 03:53:24
質問
ディレクトリ構成は:
src
src/pkg
src/pkg/t1.go
src/pkg/t1_test.go
t1.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()
}
コマンドラインからディレクトリで go テストを起動します。
src/pkg
go test t1_test.go
エラーが発生しました。
./t1_test.go:8: undefined: SayHI
FAIL command-line-arguments [build failed]
が、機能はそこにある
ヒントをありがとうございました。
どのように解決するのですか?
意図したとおりに動作しています。
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
は大丈夫です。 -
go test pkg
($GOPATH が ~ で、パッケージが ~/src/pkg にあると仮定して) は大丈夫です。 -
go test whatever_test.go
はサポートされていないので、大丈夫ではありません ドキュメントにあるように としてサポートされていません。
実行するテストを選択するには
-run <regular_expression>
フラグを使います (ここで
<regular_expression>
のように両端にワイルドカードを持つものとして解釈されます。
.*<regular_expression>.*
). 例えば
$ go test -run Say # from within the package's directory
または
$ go test -run Say my/package/import/path # from anywhere
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン