TFS vNext build Test Impact Analysis - всегда запускать все тесты из некоторых проектов в решении - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть решение C # Visual Studio 2017 с несколькими проектами и тестовыми проектами, конвейер сборки vNext с задачей VS Test. Опция «Запускать только затронутые тесты» включена. Чистые опции не отмечены.

Я запускаю сборку без изменений (без изменений кода). В рабочем пространстве агента тестирования я могу убедиться, что перестройка не происходит: ссылки на проект, Копировать локальные события, события до / после сборки, Копировать, если все исправно, все в порядке. После сборки сборки не заменяются.

Тесты из некоторых проектов не запускаются (что правильно), но тесты из некоторых проектов всегда выполняются.

Свойства этих тестовых проектов кажутся идентичными.

У кого-нибудь есть предложения о том, где искать?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

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

Тестовое задание VS (на самом деле это файл vstest.console.exe) публикует результаты в файл trx и ряд текстовых файлов, содержащих зависимости тестов.

1) Если у вас есть тесты с одинаковым именем (без учета регистра), эта публикация работает ненадежно. Как оказалось, у нас были такие тесты (то есть TestThisWhenStringIsTrue и TestThisWhenStringIsTRUE).

2) Полные имена методов испытаний (..) не должны превышать 256 символов. В этом случае публикация снова работает ненадежно.

После рефакторинга тестов TIA начал работать. Надеюсь, это поможет.

Примечание. Прежде чем перейти к этому шагу, сначала необходимо запустить инкрементную сборку.

0 голосов
/ 13 сентября 2018

Пожалуйста, убедитесь, что в предыдущей сборке / тесте не было неудачных тестов, и не было создано никаких новых файлов во время последней сборки.

Пожалуйста, обратитесь к ссылкам ниже, чтобы узнать о том, какие тесты выбираются автоматически, а также о политиках, которые могут обусловить выбор теста для Test Impact Analysis.

Test Impact Analysis (TIA) рассмотрит входящий коммит и выберет набор соответствующих тестов - они будут иметь 3 компонента

(1) Существующие тесты, на которые влияет входящий коммит.

(2) Кроме того, также выберет ранее не пройденные тесты - если нет, то в течение нескольких коммитов некоторые ранее потерпели неудачу тестовый случай может просто потеряться ... Поэтому TIA будет отслеживать тесты, которые не удалось в предыдущей сборке и включить их в выбор.

(3) Он также будет включать в себя недавно добавленные тесты - что если ваш коммит содержит новые тесты? Такие тесты могут выявить ошибки продукта, верно? Так, TIA также выберет новые добавленные тесты.

TIA имеет:

(1) надежный выбор теста - это включает в себя существующие тесты, на которые влияют, ранее провалившиеся тесты и недавно добавленные тесты.

(2) безопасное отступление - для коммитов и сценариев, которые TIA не может По этой причине он может безопасно вернуться к выполнению всех тестов (вы можете смотрите, что упомянуто в логах). TIA в настоящее время распространяется только на управляемый код и топология с одним блоком. Так, например, если код фиксирует содержит изменения в файлах HTML / CSS, он не может рассуждать о них и вернется к выполнению всех тестов.

(3) настраиваемые переопределения - вы можете запустить «все» тесты на настроенном периодичность.

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