Тип проекта framework / visual studio для использования для модульного тестирования .net standard libray?

Учитывая, что реализация .net standard library обеспечивается подчеркнутой реализацией (.Net framework, .Net Core (windows / Linux и т. Д.)). И возможно, что API-интерфейсы ведут себя немного иначе. TimeZoneInfo.Id дает разные результаты в зависимости от ОС (в прошлый раз я проверял).

Итак, как провести модульное тестирование? В Visual Studio мы можем создать проект .Net Core xUnit или проект .Net Framework xUnit. Как запустить одни и те же xUnit тесты в двух разных средах?


person resp78    schedule 13.08.2017    source источник
comment
TimeZoneInfo.Id предоставляет разные результаты в зависимости от ОС (в прошлый раз, когда я проверял) .... - хорошо, были ли обе ОС настроены на один и тот же часовой пояс; язык; культура и т. д.? msdn.microsoft.com/en -us / library /   -  person MickyD    schedule 13.08.2017
comment
В идеале вам нужно несколько проектов модульного тестирования, ориентированных на разные платформы, которые вы хотите поддерживать, и все они связаны с вашей библиотекой .NET Standard.   -  person Lex Li    schedule 13.08.2017


Ответы (2)


Самый простой способ - настроить тестовый проект на несколько целей. То есть создайте проект .NET Core xUnit из шаблона и измените

<TargetFramework>netcoreapp1.1</TargetFramework>

to

<TargetFrameworks>netcoreapp1.1;net461</TargetFrameworks>

Обратите внимание на изменение здесь на множественное / дополнительное s. Форма множественного числа позволяет указать несколько целевых платформ для тестирования, поэтому вы можете легко добавить несколько версий .NET Core и .NET Standard.

В то время как средство запуска тестов, интегрированное с VS, на данный момент будет запускать только первую структуру (см. эту проблему отслеживания на GitHub), dotnet test на консоли запустит ваши тесты для всех указанных конфигураций.

person Martin Ullrich    schedule 13.08.2017

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

person MikeLimaSierra    schedule 14.01.2021