Ошибка создания дескриптора окна в модульных тестахC#

Место общения программистов C#
Anonymous
Ошибка создания дескриптора окна в модульных тестах

Сообщение Anonymous »

У меня есть несколько модульных тестов, которые тестируют приложение .NET 4.8 Windows Forms.
Некоторые из этих тестов создают экземпляр формы и выполняют тесты различной логики. Конструктор вызывает InitializeComponent, который выделяет элементы управления, к которым необходим доступ некоторым тестам.
Моя проблема заключается в том, что при запуске агента сборки в действиях github

(локально развернутый Github Enterprise. Все агенты сборки — Windows Server 2019) некоторые тесты выдают «Ошибка создания дескриптора окна» при попытке создать элементы управления. Локально все работает нормально.
Я проверил все очевидные вещи, а также некоторые неочевидные вещи, которые предложил Google.
  • Каждый тест использует при создании формы, поэтому я знаю, что все удаляется.
  • Я проверил ограничения на дескрипторы пользователя и дескрипторы GDI для каждого процесса, они по умолчанию равны 10 000 на агенте.
  • Я добавил проверку в функцию настройки, чтобы каждый модульный тест выводил значение Process.GetCurrentProcess().HandleCount на консоль и, следовательно, отображался в журналах сборки. Со временем происходит небольшое увеличение, но оно достигает максимума около 1250, поэтому на самом деле дескрипторы не заканчиваются.
  • Я проверил «кучу рабочего стола», и на моем ноутбуке ситуация такая же, как и в агенте сборки.
  • Он без проблем проведет несколько сотен тестов, прежде чем они начнут давать сбой. Как только он начинает давать сбой, они не все терпят неудачу. Некоторые проходят без проблем.
  • Я считал, что агент сборки «безголовый» и, возможно, он не может создать форму, потому что нет способа ее отобразить. Но сотни тестов, которые делают одно и то же, работают прекрасно.
Есть предложения?

Вернуться в «C#»