тестовые кейсы не запускаются в основном пакете - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь написать простой тест, чтобы лучше понять тестирование golang, но тестовый пример не выполняется, и я ожидаю, что он потерпит неудачу.

В моем main.go у меня есть:

package main

import "fmt"

func main() {

    fmt.Println("run")

}

func twoSum(nums []int, target int) []int {
    lookup := make(map[int]int)
    for i, n := range nums {
        c := target - n
        if j, ok := lookup[c]; ok {
            return []int{j, i}
        }
        lookup[n] = i
    }
    return []int{}

}

, а затем в моем main_test.go у меня есть это:

package main

import (
    "reflect"
    "testing"
)

var twoSumsCases = []struct{
    input []int
    target int
    expected []int

} {
    {
         []int{2,7,11,15},
         9,
         []int{0,3},

    },
}

func TesttwoSum(t *testing.T) {

    for _, tc := range twoSumsCases {
        actual := twoSum(tc.input, tc.target)

        eq := reflect.DeepEqual(actual, tc.expected)

        if eq {
            t.Log("expected: ", tc.expected, " actual: ", actual)
        } else {
            t.Error("expected: ", tc.expected, " actual: ", actual)

        }
    }
}

затем, когда я запускаю go test -v... это говорит мне, что testing: warning: no tests to run.Я посмотрел на это в качестве примера: https://blog.alexellis.io/golang-writing-unit-tests/...and Я думаю, что получил все, что мне нужно, но не уверен, почему тест не выполняется.

Ответы [ 2 ]

3 голосов
/ 03 мая 2019

Измените имя тестовой функции на TestTwoSum. Это имя соответствует шаблону, описанному в первом абзаце документации пакета тестирования :

... Он предназначен для использования совместно с командой «go test», которая автоматизирует выполнение любой функции вида

func TestXxx(*testing.T)

, где Xxx не начинается со строчной буквы. ...

0 голосов
/ 03 мая 2019

Попробуйте переименовать тестовую функцию следующим образом:

func TestTwoSum(t *testing.T) {

Тесты Голанга довольно чувствительны к регистру. Функции тестирования должны быть названы с использованием Pascal Case, начиная с «Test», чтобы инструмент go test мог их обнаружить.

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