NUnit игнорирует DomainUsage в файле runsettings - PullRequest
0 голосов
/ 19 сентября 2019

Я запускаю тесты в Visual Studio, используя «Test Explorer» с NUnit и файл .runsettings (указанный при выборе параметра в графическом интерфейсе «Выбор файла настроек»)

Файл моих настроек (называетсяmytests.runsettings):

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <RunConfiguration>
    <DisableAppDomain>True</DisableAppDomain>
  </RunConfiguration>
  <ForceListContent>true</ForceListContent>
  <NUnit>
    <DomainUsage>None</DomainUsage>
  </NUnit>
</RunSettings>

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

Но независимо от того, что я делаю, он не запускается без домена приложений!

Запуск из командной строки работает :

nunit3-console.exe --domain = Нет --inprocess MyTests.dll

Что мне нужно сделать, чтобы использовать этот параметр в NUnit?

1 Ответ

1 голос
/ 19 сентября 2019

Не думаю, что вы можете это сделать.

  1. В файле runsettings нет распознанного элемента DomainUsage под NUnit.DomainUsage является внутренне используемым свойством, которое будет учитываться, если установлено.Но вы не можете установить это таким образом.Ваш элемент DomainUsage просто игнорируется.

  2. Если адаптер получил вашу настройку DisableAppDomain, то будет установить DomainUsage до None.Тем не менее, я не верю, что он на самом деле его получает.

Пункт 2 требует некоторого объяснения.Обратите внимание, что я не работал над адаптером в течение нескольких лет, и я собираюсь из памяти, но здесь это ...

Параметр DisableAppDomain был добавлен, чтобы позволить Visual Studio заставить NUnit попытаться запустить без использования AppDomain.Предполагается, что Test Explorer настроен таким образом, чтобы можно выполнить таким образом, т. Е. Убедиться, что все уже доступно в текущем домене.

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

Основанием для этого прошлого решения было то, что Test Explorer полностью отвечает за настройкуПроцесс и AppDomain, используемые для запуска тестов.У пользователя нет никакого способа повлиять на это, как и у NUnit.Конечно, при использовании консоли бегуна это не так - управление находится в руках пользователя.

Что еще нужно исследовать, это , почему вы чувствуете необходимость запуска без тестаAppDomain создается.Но это, наверное, другой вопрос.: -)

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

ОБНОВЛЕНИЕ:

@ Терье, который поддерживаетадаптер ответил, подтвердил, что нет способа установить DomainUsage в файле runsettings или каким-либо другим способом, который мы знаем при работе под тестовым адаптером.Документы были исправлены, чтобы избежать неявного предположения о том, что это возможно.

Мы полагаем, но не подтвердили экспериментально, что TestExplorer создает свой собственный домен приложений всякий раз, когда он использует этот параметр для подавления своего создания тестовым адаптером.

...