TFS vNext build Анализ влияния тестирования - всегда запускать все тесты из некоторых проектов в решении

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

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

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

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

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

2 ответа

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

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

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

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

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

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

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

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

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

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

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

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

TIA имеет:

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

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

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

Другие вопросы по тегам