В .NET Framework 4.5 и ниже у меня есть библиотека модульного тестирования, которую я хотел бы передать проектам тестирования модулей / реализации, чтобы уменьшить накладные расходы при запуске нового тестового проекта.
Сегодня вечером я попыталсясделать .NET Core версию этого.В процессе разработки мой тестовый модуль был добавлен в решение Console App в качестве локальной ссылки.После нескольких попыток борьбы с потерей тестера xUnit, который раньше поставлялся в комплекте с xUnit (но был заброшен около 2.3), я придумал следующий список пакетов для библиотеки UnitTesting.
Список пакетов библиотеки модульных тестов
<ItemGroup>
<PackageReference Include="AutoFixture.AutoMoq" Version="4.5.0" />
<PackageReference Include="AutoFixture.Xunit2" Version="4.5.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0" />
<PackageReference Include="MSTest.TestAdapter" Version="1.3.2" />
<PackageReference Include="MSTest.TestFramework" Version="1.3.2" />
<PackageReference Include="Shouldly" Version="3.0.1" />
<PackageReference Include="System.ComponentModel.TypeConverter" Version="4.3.0" />
<PackageReference Include="xunit" Version="2.4.0" />
</ItemGroup>
Последующее отслеживание консольного приложения
Из-за ситуации с новым тестовым адаптером я обнаружил, что единственный способ получить консольное приложение для просмотра модульных тестов - добавить следующий пакет.к приложению.
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0">
Если этот пакет был включен в библиотеку, тесты не будут найдены.
Проблема решена.
Проблема не решена
Я развернул все это как пакет nuget для .Net Core 2.1, выгрузил библиотеку из консольного приложения и извлек пакет nuget как Зависимость.
На данный момент пакет имеетпредупреждение о сборке, и оно не может ссылаться на то, на что оно ссылалось несколько раз, будучи локальным проектом решения.Он предлагает понизить версию до .net Framework 4.6.1, где, я думаю, .net Framework начинает входить в .net Standard 2.0?Это может быть хорошо для достижения цели, которую я хочу, но я бы предпочел использовать исключительно ядро .net, так как это домашний проект, который я делаю в .net Core, чтобы узнать больше об этом.(Возможно, это не тот холм, за который стоит умирать, я открыт для этой обратной связи.)
Я много читал о том, как ядро .net использовало неявное управление версиями для своих пакетов, и это не былоприменяется правильно.Я видел несколько потоков, которые я попытаюсь связать ниже, чтобы показать различные вещи, которые я пробовал, но в конце я не могу использовать библиотеку, если она развернута как пакет nuget, и могу, если она загружается вручную врешение.
xUnit исследование, прежде чем я получил модульные тесты для обнаружения
- https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-relnotes#testadapterextension
- https://developercommunity.visualstudio.com/content/problem/315835/unit-tests-are-not-running.html
- https://xunit.github.io/docs/nuget-packages
.NET Core 2.1 Библиотека не компилируется в .NET Core 2.1 Исследования приложений
- https://github.com/aspnet/Docs/issues/6430 - Я считаю, что это наиболее актуальное обсуждение из всехссылки для моего выпуска
- https://forums.xamarin.com/discussion/123160/nugets-giving-error-restored-using-netframework-version-4-61-instead-of-the-target-framework
- https://github.com/dotnet/standard/issues/481
- https://github.com/xunit/xunit/issues/1767
Есть небольшие совпадения по маленьким битам ичасти, которые я нашел под любой темой.Одним из наиболее диких предложений было заменить Project SDK вместо приложения и добавить в приложение (или библиотеку? Я пробовал оба варианта в разных сочетаниях).
Мне кажется, я решил заставить работать xUnit в.NET Core 2.1, я просто не могу развернуть его как nupkg.
Кто-нибудь еще побеждал это?Мне не удалось найти ответ, который работал для меня ни в одном из перечисленных выше случаев, или в поиске в StackOverflow.
Возможно, я ошибаюсь, но все пакеты, на которые я ссылался, полагаю, делаютработать с .NET Core 2.1 или должны основываться на их описании перед установкой.Об этом свидетельствует приложение, работающее, когда проект модульного теста находится в решении с приложением.
Спасибо всем, кто найдет время, чтобы прочитать это.
-Omni