2016-08-18 7 views
0

別のソースコードリポジトリ(ホストexample.com)に格納されたサブモジュールにgoプロジェクトを構成する方法を理解しようとしていますが、そうした場合、モジュール内のテストの実行方法がわかりません。次の例で何が間違っているのですが、どんな助けでも大歓迎です!!プロジェクトのモジュール内でテストするためにインポートをどのように構造化しますか?

mkdir -p src/example.com/john/tool 

echo "package tool"  >> src/example.com/john/tool/book.go 
echo ""     >> src/example.com/john/tool/book.go 
echo "type Book struct {" >> src/example.com/john/tool/book.go 
echo " Title string"  >> src/example.com/john/tool/book.go 
echo "}"     >> src/example.com/john/tool/book.go 
echo ""     >> src/example.com/john/tool/book.go 

echo "package tool"  >> src/example.com/john/tool/book_test.go 
echo ""     >> src/example.com/john/tool/book_test.go 
echo "import ("   >> src/example.com/john/tool/book_test.go 
echo " \"tool\""   >> src/example.com/john/tool/book_test.go 
echo " \"testing\""  >> src/example.com/john/tool/book_test.go 
echo ")"     >> src/example.com/john/tool/book_test.go 
echo ""     >> src/example.com/john/tool/book_test.go 
echo "func TestBook(t *testing.T) { }" >> src/example.com/john/tool/book_test.go 
echo ""     >> src/example.com/john/tool/book_test.go 

export GOPATH=`pwd` 

go test example.com/john/tool 

私はこのテストを実行すると、これは私が見ていますエラーです:明らか

# example.com/john/tool 
src/example.com/john/tool/book_test.go:4:3: cannot find package "tool" in any of: 
    /usr/local/go/src/tool (from $GOROOT) 
    /Users/john/app/src/tool (from $GOPATH) 
FAIL example.com/john/tool [setup failed] 

book_test.goあなたはおそらく完全なパスに置くことができる「ツール」パッケージをインポートすることはできません、しかし私がgithubを見るとき、誰も彼らのモジュールでそれをしません。だから、私が間違っていることを理解していない。

import "tool" 

+0

なぜパッケージ "tool"を_test.goファイルから再度インポートしていますか?それは必要ではなく、それは他の「ツール」パッケージを探しているときに問題を作り出しています。 book_test.goは既に作成しているツールパッケージの一部です。 –

答えて

2

あなたのラインが犯罪者です。標準ライブラリにパッケージツールはなく、パッケージツールのインポートパスはexample.com/john/toolです。

インポートを削除するだけです。現在のパッケージをインポートする必要はありません(これは(縮退した)インポートサイクルとなるため不可能です)。

関連する問題