私はGolangを始めたばかりで、ユニットテストを実行しようとしています。go testを実行すると、ターミナルから次の出力が表示されます。
go: cannot find main module, but found .git/config in /Users/dp/Documents
to create a module there, run:
cd ../.. && go mod init
私のファイル構造は次のようにかなりシンプルです
├── CARDS
│ ├── .vscode
│ ├── main.go
│ ├── test.go
│ ├── deck_test.go
│ └── my_cards.txt
deck_test.goの内容は
package main
import "testing"
func TestNewDeck(t *testing.T) {
d := newDeck()
if len(d) != 52 {
t.Errorf("Length is not 52, got %v", len(d))
}
if d[0] != "A of D" {
t.Errorf("First card is not A of D, got %v", d[0])
}
if d[len(d)-1] != "K of C" {
t.Errorf("Last card is not K of C, got %v", d[len(d)-1])
}
}
どのような洞察でも役に立ちます!
ベストアンサー1
必須ではありませんが、init
Git (またはその他の VCS) リポジトリ内にいる場合は、モジュールがremote
s 情報を参照してモジュールの名前を正しく判断できるように、次のようにすることが一般的に推奨されます。
git init
git remote add origin https://github.com/syntaqx/dacode
go mod init
go mod
私のモジュール名がおそらく であることを意図していることを理解できるようにしますgithub.com/syntaqx/dacode
。
あるいは、特定の順序で作業する必要がないようにするためによく行うのですが、モジュール名を指定することもできます。
go mod init dacode # valid, but..
go mod init github.com/syntaqx/dacode # is generally better, because it describes my remote
これを指定することで、コードから何かを変更することなく、モジュールをどのディレクトリでも初期化できるようになります。
注記:特に、始めたばかりのときは、リポジトリに使用するのと同じ命名構造でモジュールに名前を付けることを強くお勧めします。そうすることで、次のようなコマンドが可能になります。
go get github.com/syntaqx/dacode
内部の作業を自分で行わずに正しく機能させる。仕組みについて理解を深めるにつれて、その慣例に従うか、慣例に反するかを決めることができますが、一貫性を保つ方が賢明でしょう。
これが役に立つことを願っています!