Як `іти тестувати` всі тести в моєму проекті?


141

go testКоманда охоплює *_test.goфайли тільки в одному рідше.

Я хочу, щоб go testвесь проект, а це означає, що тест повинен охоплювати всі *_test.goфайли в dir ./та кожен dirren dir під dir ./.

Яка команда це зробити?

Відповіді:


278

Це має запустити всі тести в поточному каталозі та всіх його підкаталогах:

$ go test ./...

Тут слід запустити всі тести для заданих каталогів:

$ go test ./tests/... ./unit-tests/... ./my-packages/...

Для цього слід запустити всі тести з імпортним шляхом з префіксом foo/:

$ go test foo/...

Це має запустити всі тести імпорту тесту з префіксом foo:

$ go test foo...

Це має запустити всі тести у вашому $ GOPATH:

$ go test ...

4
FYI в zsh, голий ...в останньому прикладі повинен бути уникнути, IEgo test \...
Гейб Kopley

Коли я намагаюся запустити всі тести в subdir, який я отримуюgo: warning: "subdir/..." matched no packages
Іван Арацький

@zzzz як запускати тести для певних папок? скажіть "піти на тест foo ... bar ...?"
Омурбек Кадирбеков

go test ./...насправді чудова команда !. Дякую за допомогу :)
джміль

53

З Go 1.9 починайте користуватися

go test ./...

У Go 1.6 до 1.8 також ./...збігається vendorкаталог . Щоб пропустити надані пакети, ви користуєтесь

go test $(go list ./... | grep -v /vendor/)

Джерела: https://github.com/golang/go/isissue/11659 , https://github.com/golang/go/isissue/14417 , https://github.com/go-lang-plugin-org/ go-lang-idea-plugin / issues / 2366 , коментар @ nickgrim


1
Настільки просто, як це рішення виглядає, людям у Windows це набагато складніше (я не є, але деякі мої товариші по команді) це запускають. Краса Go Go працює на кожній платформі без необхідності Makefile є чудовою.
Конрад Кляйн

5
Варто зазначити, що станом на Go 1.9 ./... більше не відповідає ./vendor/каталогу, тому ви можете запустити всі свої тести і жоден із тестів постачальникаgo test ./...
nickgrim

11

Структура папок

ProjectName/folderName1/file_test.go
ProjectName/folderName2/file1_test.go
ProjectName/folderName3/file2_test.go

перейти до тестової команди Command

   ProjectName$ go test -v ./...
    ProjectName$ go test  ./...
    ProjectName$ go test -cover ./...

Звіт про покриття всього проекту

ok      ProjectName/folderName1 10%
ok      ProjectName/folerName2  90%
ok      ProjectName/folerName2  85%
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.