Вы почти нашли решение самостоятельно. Действительно, причина, по которой тесты не выполняются, заключается в том, что целевые платформы netstandard
не являются исполняемыми. netstandard
- это контракт, но для него требуется среда выполнения, такая как netcoreapp
, .NET Framework (например, net472
), Xamarin или другие. Тесты обнаруживались статическим анализом, а не исполнением.
Обычный способ написания тестов для своего кода - это поместить тесты в отдельный проект. Это также означает, что когда вы отправляете ваше приложение клиентам, в устанавливаемых ими библиотеках нет тестового кода, который никогда не будет запущен, а просто увеличит загрузку без причины.
Итак, создайте тестовый проект xunit. В идеале он нацелен на ту же среду выполнения, на которой будет работать ваше приложение, но я никогда не занимался разработкой Xamarin, поэтому я не знаю, выполнимо ли это, поэтому, возможно, netcoreapp2.1
или netcoreapp2.2
достаточно хороши. Если вы используете Visual Studio, добавьте ссылку на проект , в противном случае отредактируйте csproj и добавьте <ProjectReference Include="../path/to/project.csproj" />
.
Если в вашем рабочем коде есть внутренние классы, которые вы не хотите делать общедоступными, добавьте атрибут InternalsVisibleTo
в вашу производственную сборку, и он будет доступен только для вашей тестовой сборки.