Почему `go test -run NotExist` проходит?

Если я запускаю следующее

go test -run NotExist

Ответ ПРОШЕЛ. Поскольку мой тестовый файл не содержит теста с именем TestNotExist, я ожидаю, что приведенная выше команда вернет FAIL.


person mozey    schedule 19.07.2016    source источник
comment
Потому что все указанные вами тесты, которых не было, были пройдены, или, другими словами, у вас не было сбоев при тестировании.   -  person JimB    schedule 19.07.2016
comment
Такое поведение на самом деле не имеет смысла, я ожидаю, что оно скажет что-то вроде Test 'NotExist' not found   -  person mozey    schedule 19.07.2016
comment
Это просто поведение, с которым все согласились. Часто вы запускаете тесты без выполнения каких-либо тестов или проверяете ошибки компиляции тестов.   -  person JimB    schedule 19.07.2016


Ответы (1)


Без опции -run go test запускает все тесты. Вы используете параметр -run, чтобы не запускать все тесты; чтобы отфильтровать, исключить тесты (и вы делаете это в форме требования имен неисключаемых тестов для сопоставления< /em> шаблон регулярного выражения - но это не имеет значения с точки зрения обсуждения):

Команда go, Тестовые пакеты:

По умолчанию go test не требует аргументов. Он компилирует и тестирует пакет с исходным кодом в текущем каталоге, включая тесты, и запускает тесты.

Описание флагов тестирования:

-run regexp
   Run only those tests and examples matching the regular expression.

Это совершенно "нормальный" результат, когда фильтрация отфильтровывает все тесты, что в наборе тестов, которые все еще необходимо выполнить, не остается ни одного теста.

Если ни один из тестов не прошел, это считается пройденным тестом. Если никакие тесты не совпадают, никакие тесты не будут выполняться и никакие тесты не будут НЕУДОБНЫМИ, и, таким образом, тестовый запуск будет ПРОЙДЕН.

person icza    schedule 19.07.2016
comment
Если подумать об этом еще раз, поведение имеет смысл. Я слышал, что вы не можете доказать отсутствие ошибок. Можно только проверить их наличие. Если явно ничего не выходит из строя, предположим, что это работает. Что меня раздражает, так это то, что если я сделаю опечатку в команде, я не получу предупреждение. - person mozey; 20.07.2016
comment
@mozey Согласен. Но простой go test выявит ошибки, и это то, что вы должны использовать для тестирования/валидации. Вы должны использовать опцию -run только в том случае, если хотите быстро протестировать некоторые изменения. - person icza; 20.07.2016