Подтвердить что ты не робот

Тест Golang: "нет тестовых файлов"

Я создаю простой тест в моем каталоге пакетов с именем reverseTest.go

package main

import "testing"

func TestReverse(t *testing.T) {
    cases := []struct {
        in, want string
    }{
        {"Hello, world", "dlrow ,olleH"},
        {"Hello, 世界", "界世 ,olleH"},
        {"", ""},
    }

    for _, c := range cases {
        got := Reverse(c.in)
        if got != c.want {
            t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)
        }
    }
}

всякий раз, когда я пытаюсь запустить его, вывод

exampleFolder[no test files] 

это мой го окр

GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/juan/go"
GORACE=""
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CXX="g++"
CGO_ENABLED="1"

Любая помощь будет оценена. Спасибо!!

4b9b3361

Ответ 1

Файлы, содержащие тесты, следует называть name_test, с суффиксом _test. Из Как написать код перехода:

Вы пишете тест, создав файл с именем, заканчивающимся на _test.go, который содержит функции с именем TestXXX с подписью func (t *testing.T). Каждая такая функция выполняет тестовую структуру; если функция вызывает функцию сбоя, такую ​​как t.Error или t.Fail, считается, что тест потерпел неудачу.

Ответ 2

Возможно, у вас нет тестовых файлов в корневом пакете, и при запуске go test -v не тестируются подпакеты, только корневой пакет.

Например,

.
├── Dockerfile
├── Makefile
├── README.md
├── auth/
│   ├── jwt.go
│   ├── jwt_test.go
├── main.go

Как вы видите, в корневом каталоге нет тестовых файлов, только файл main.go. Вы получите "нет тестовых файлов".

Решение состоит в том, чтобы протестировать все пакеты в текущем рабочем каталоге, рекурсивно

go test -v ./...

Или если вы используете govendor

govendor test +local

Или вы можете указать, какой пакет (каталог) проверить

go test -v ./packagename

Или рекурсивно протестируйте пакет

go test -v ./packagename/...

Ответ 3

Ваша тестовая функция в вашем _test файле должна начинаться с префикса "Test"

ХОРОШО:

func TestName (

ПЛОХОЙ:

func NameTest (

Эта функция не будет выполнена в качестве теста и приводит к сообщенной ошибке

Ответ 4

Я столкнулся с той же проблемой. В дополнение к предыдущим ответам я нахожу проблему, когда невозможно выполнить проверку, если имя папки вашего пакета testing.

Терминальная демонстрация проблемы ниже:

с именем папки testing :

~/go/src/testing$ go test
?       testing [no test files]

без testing имени папки:

~/go/src/testing_someothername$ go test
PASS
ok      testing_someothername   0.089s

В моем случае это было полезно