2016-11-05 4 views
3

У меня есть набор тестов для моей структуры (https://github.com/stretchr/testify#suite-package). Прежде чем я смог провести один тест, указав только образец:Могу ли я запустить один тест в наборе?

go test -v ./services/gateways/... -run mytest 

Этот подход не работает после преобразования. Неудача или есть способ?

+0

ли '-m' делать то, что вы ожидаете? Из документации: «Регулярное выражение для выбора методов тестовых наборов задает аргумент командной строки« -m », возможно, в сочетании с' -run', чтобы указать набор? – JimB

+0

В соответствии с помощью «run» предназначен для запуска только тех тестов и примеров, которые соответствуют регулярному выражению ». Содержимое файла имеет только один тест, который вызывает метод набора. Поэтому 'go test' после анализа файлов может просто не найти совпадений, если он ищет что-то вроде' func TestBlah (t * testing.T) '... – Schultz9999

+0

yes,' -run' выбирает функцию 'Test *' для запуска, который запускает конкретный пакет, а флаг '-m' будет фильтровать методы набора. – JimB

ответ

0

я думаю, что вы SOL с этим пакетом, но вот подобный подход с Go 1.7 Инструменты фондового тестирования:

package main 

import "testing" 

func TestSuite1(t *testing.T) { 
    t.Run("first test", func(t *testing.T) { t.Fail() }) 
    t.Run("second test", func(t *testing.T) { t.Fail() }) 
} 

func TestSuite2(t *testing.T) { 
    t.Run("third test", func(t *testing.T) { t.Fatal("3") }) 
    t.Run("fourth test", func(t *testing.T) { t.Fatal("4") }) 
} 

Пример вывода для одного набора:

therealplato/stack-suites Ω go test -run TestSuite1  
--- FAIL: TestSuite1 (0.00s) 
    --- FAIL: TestSuite1/first_test (0.00s) 
    --- FAIL: TestSuite1/second_test (0.00s) 
FAIL 
exit status 1 
FAIL github.com/therealplato/stack-suites 0.005s 

Пример вывода для один тест:

therealplato/stack-suites Ω go test -run TestSuite2/third 
--- FAIL: TestSuite2 (0.00s) 
    --- FAIL: TestSuite2/third_test (0.00s) 
     main_test.go:11: 3 
FAIL 
exit status 1 
FAIL github.com/therealplato/stack-suites 0.005s 
+0

Интересно. Возможно, «TestSuite2/third» - это ключ. Я попробую. Спасибо! – Schultz9999

2

Вы можете запустить одиночные методы, с помощью указания -testify.m аргумент.

запустить this suite method команду:

go test -v github.com/vektra/mockery/mockery -run ^TestGeneratorSuite$ -testify.m TestGenerator

+0

Теперь флаг был изменен на -m (go version go1.9) –

+0

Жаль, что вы не можете просто отметить тест с помощью .only или что-то вроде того, что вы можете сделать в других тестовых средах. –

Смежные вопросы