VSTS Test не пройден, но vstest.console проходит; assert выполняется перед кодом по какой-то причине?

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

Выполняется тестовая сборка в виде.dll. Многие из этих тестов вызывают API.

В проблемном методе есть 2 вызова API, которые ожидают их: один для записи записи в этот внешний интерфейс, а другой для извлечения всех записей и последующего чтения последнего в этом внешнем интерфейсе, оба через API. Тест состоит в том, чтобы просто проверить, была ли запись последней записи успешной в сквозном контексте, поэтому есть как запись, так и чтение.

Если мы выполним тест в Visual Studio, все будет работать как положено. Я также проверил это вручную с помощью команды lining vstest.console.exe, и ожидаемые результаты также всегда получаются.

Тем не менее, когда дело доходит до задачи VS Test в VSTS, она по какой-то причине дает сбой. Мы пытались выяснить это, и в конце концов мы достигли точки, когда мы распечатали список из части "чтение". Оказывается, что последняя вставленная нами запись отсутствует в данных, которые мы извлекли, но если мы проверим внешний интерфейс другим методом, мы подтвердим, что процесс записи действительно произошел. Что дает? Почему VSTest становится устаревшим набором записей?

Мы также заметили две вещи:

1.) Для пройденных тестов ни один из выводов Console.WriteLine не отображается в журналах. Только при неудачном тесте они это делают.

2.) Даже если наш вызов Data.Should.Be находится в самом конце TestMethod, журналы сообщают об ошибке ДО того, как она напечатает строки! И даже тогда, печать должна произойти после прочтения списка записей, и все же, когда распечатки действительно происходят, мы все еще пропускаем запись, которую мы только что написали.

Есть ли что-то наподобие того, что нам здесь не хватает? Мне действительно кажется, что VSTS vstest выполняет утверждение перед реальным кодом. Порядок TestMethods происходит в правильном порядке (4-й тест, написанный сверху вниз в коде, выполняется 4-й, а не 4-й до последнего), и нам нужно, чтобы они выполнялись в правильном порядке, потому что некоторые из последующих тестов зависят от Прежние испытания прошли успешно.

Что-то нам здесь не хватает? Я бы поставил исходный код, но есть куча вещей, которые мне нужно сначала почистить, если так.

1 ответ

Решение

Оказывается, мы очень неправильно поняли, что делает "ожидание". Вместо этого мы используем.Wait() для виновника, а также пройдем другие тесты для проверки качества.

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