go test: запускать только тесты, содержащие тег сборки? - PullRequest
0 голосов
/ 13 января 2019

У меня есть набор длительных тестов, определенных тегом build. Например,

// file some_test.go
//+build func_test

(rest of file with test cases)

И у меня есть много других более коротких тестов, без этого флага сборки. Есть ли способ, которым я могу легко запустить только тесты, содержащие тег сборки "func_test"?

Обратите внимание, что если я просто запускаю go test -tags func_test, он запускает ВСЕ тесты, включая тесты в some_test.go.

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Согласно Голангу Док https://golang.org/pkg/go/build/

В теге build перечислены условия, при которых файл должен быть включен в пакет. Поэтому, если вы хотите запустить тест только для тегов сборки func_test, вам нужно предоставить другой тег для других тестов.

Вот пример: В моей тестовой директории есть следующие 2 тестовых файла.

func_test.go

//+build test_all func_test

package go_build_test

import (
    "fmt"
    "testing"
)

func TestNormal(t *testing.T) {
    fmt.Println("testing:", t.Name())

}

other_test.go

//+build test_all,!func_test

package go_build_test

import "testing"
import "fmt"

func TestOtherCase(t *testing.T) {
    fmt.Println("testing:", t.Name())
}

Теперь, если вы хотите запустить все тесты.

$ go test -tags=test_all
testing: TestNormal
testing: TestOtherCase
PASS
ok      _/D_/Project/ARC/source/prototype/go/src/go-build-test  0.186s

Запускается только func_test

$ go test -tags=func_test
testing: TestNormal
PASS
ok      _/D_/Project/ARC/source/prototype/go/src/go-build-test  1.395s

Хитрость в том, чтобы работать с комментарием компоновки // + с условиями AND / OR.

0 голосов
/ 13 января 2019

Вам нужен знак = после -tags

go test -tags=func_test

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...