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-го до последнего), и нам нужно, чтобы они выполнялись в правильном порядке, потому что некоторые из более поздних тестов зависят от предыдущие испытания успешны.

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


person ZekiraDrake    schedule 11.07.2018    source источник


Ответы (1)


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

person ZekiraDrake    schedule 11.07.2018
comment
Поскольку ваша проблема решена, вы можете отметить ответ, щелкнув символ √ слева от ответа. - person Marina Liu; 16.07.2018