Пройти тест <function>возвращает неопределенное значение: <function> - PullRequest
0 голосов
/ 08 февраля 2019

Попытка запустить «go test sum_test.go» возвращает ошибку:

. / Sum_test.go: 18: 13: undefined: аргументы командной строки SumInt8 FAIL [сборка не выполнена]

Я прохожу вводный курс по Голангу.Наш учитель распространил кодовый файл sum.go и тестовый файл sum_test.go.Попытка запустить "go test" на sum_test.go возвращает вышеуказанную ошибку.Код отлично работает на наших учителей Mac, и он испытывает трудности при воссоздании проблемы.Вот мои настройки среды go: https://pastebin.com/HcuNVcAF

sum.go

package sum

func SumInt8(a, b int8) int8 {
return a + b
}

func SumFloat64(a, b float64) float64 {
return a + b
}

sum_test.go

package sum

import "testing"

// Check https://golang.org/ref/spec#Numeric_types and stress the 
limits!
var sum_tests_int8 = []struct {
n1       int8
n2       int8
expected int8
}{
{1, 2, 3},
{4, 5, 9},
{120, 1, 121},
}

func TestSumInt8(t *testing.T) {
for _, v := range sum_tests_int8 {
    if val := SumInt8(v.n1, v.n2); val != v.expected {
        t.Errorf("Sum(%d, %d) returned %d, expected %d", 
v.n1, v.n2, val, v.expected)
    }
}
}

Я не вижу особых ошибок, поэтому я ожидал "gotest sum_test.go "для запуска и успеха.Однако кажется, что он не может найти метод SumInt8 в sum.go.

1 Ответ

0 голосов
/ 08 февраля 2019
$ go help packages

Многие команды применяются к набору пакетов:

go action [packages]

Обычно [packages] представляет собой список путей импорта.

Путь импорта, который являетсяукоренившийся путь или начинается с.или .. элемент интерпретируется как путь к файловой системе и обозначает пакет в этом каталоге.

В противном случае путь импорта P обозначает пакет, найденный в каталоге DIR / src / P для некоторого DIR, указанного в GOPATH.переменная окружения (подробнее см. 'go help gopath').

Если пути импорта не указаны, действие применяется к пакету в текущем каталоге.

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


Список всех файлов в текущем каталоге, используемых в тесте:

go test sum_test.go sum.go

или просто тестирование полного пакета в текущем каталоге.

go test

Например,

$ go test -v sum_test.go sum.go
=== RUN   TestSumInt8
--- PASS: TestSumInt8 (0.00s)
PASS
ok      command-line-arguments  0.002s
$ 

или, для всего пакета

$ go test -v
=== RUN   TestSumInt8
--- PASS: TestSumInt8 (0.00s)
PASS
ok      so/sum  0.002s
$

Опция '-v' дает подробный вывод.

sum_test.go:

package sum

import "testing"

// Check https://golang.org/ref/spec#Numeric_types and stress the limits!
var sum_tests_int8 = []struct {
    n1       int8
    n2       int8
    expected int8
}{
    {1, 2, 3},
    {4, 5, 9},
    {120, 1, 121},
}

func TestSumInt8(t *testing.T) {
    for _, v := range sum_tests_int8 {
        if val := SumInt8(v.n1, v.n2); val != v.expected {
            t.Errorf("Sum(%d, %d) returned %d, expected %d",
                v.n1, v.n2, val, v.expected)
        }
    }
}

sum.go:

package sum

func SumInt8(a, b int8) int8 {
    return a + b
}

func SumFloat64(a, b float64) float64 {
    return a + b
}

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