Первое, что вам нужно сделать, это установить nunit.consolerunner, если у вас его еще нет. Установите это через NuGet в VS. После этого вы можете приступить к написанию сценария после сборки для каждого тестового проекта.
К счастью, скрипт пост-сборки не должен меняться в зависимости от проекта. На самом деле, это вообще не должно меняться, если NuGet помещает nunit.consolerunner в ожидаемое место. Сценарий будет работать как в конфигурации отладки, так и в конфигурации выпуска, поскольку свойства TargetDir и TargetFileName из VS передаются в консоль в виде параметров. Вот сценарий, вам просто нужно вставить его в раздел после сборки событий сборки на панели свойств соответствующего проекта:
cd %HOMEPATH%
cd ".nuget\packages\nunit.consolerunner\3.10.0\tools"
nunit3-console.exe $(TargetDir)$(TargetFileName) --where "cat == Unit" --work=$(TargetDir)\..
Различные части этого можно объяснить следующим образом:
cd %HOMEPATH%
сделано потому, что nuget обычно устанавливается в вашу директорию пользователя cd ".nuget\packages\nunit.consolerunner\3.10.0\tools
Если предположить, что .nuget существует в вашей директории пользователя, он переместится в расположение консоли запуска nuget .exe файл nunit3-console.exe
Это исполняемый файл, который запускает ваши тесты $(TargetDir)$(TargetFileName)
Это полный путь к DLL, содержащей ваши тесты, созданные с использованием переменных VS в окне свойств. --where "cat == Unit"
Это необязательное ограничение, которое мы использовали для ограничения наших тестовых заданий категорией модульных тестов. Вы можете опустить это - это просто показать вам, как вы можете ограничить категории, если хотите. Смотрите документы (ссылка ниже) для получения дополнительной информации. Примечание: категория «Единица» была нашей собственной аннотацией, которую мы добавили. Это не что-то из коробки. Поэтому, если вы действительно добавите это ограничение без аннотирования ваших тестов, ничего не запустится! --work=$(TargetDir)\..
Это поместит файл TestResult. xml в родительскую папку библиотеки DLL для проекта, который вы создаете. Для VS2019, в любом случае, в данный момент этот каталог является папкой bin в основной папке проекта. Мы использовали это, потому что нам нужно было перенаправить тестовый вывод. В противном случае несколько проектов в одном решении пытались записать в один и тот же файл по умолчанию и не выполнялись из-за проблем с параллелизмом.
Ссылки
Документы по работе с консолью Nunit : https://github.com/nunit/docs/wiki/Console-Command-Line