Как запустить тесты NUnit в проекте .Net Core, который ссылается на проект .NetStandard, включая эти тесты? - PullRequest
0 голосов
/ 19 февраля 2019

Мои тесты определены в проекте .NetStandard (сборка) (так как мне нужно тестировать их на самых разных платформах).Мы не можем запустить их напрямую, так как для этого требуется, чтобы проект был нацелен на что-то вроде .NetFramework или .Net Core.

Итак, я создал проект .Net Core и ссылаюсь на мой проект .NetStandard.

Однако при запуске dotnet test ...csproj я, очевидно, получаю

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

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

Кажется, что обнаружитель тестов просто нене смотрите на прилагаемые сборки с тестами.

Однако должен быть какой-то способ упомянуть это, верно? Документация довольно скромна в этом отношении, поэтому я даже не знаю, возможен ли вообще такой подход.Однако при тестировании Xamarin.iOS / Android с помощью TestRunners у них всегда есть возможность добавить мою сборку для тестирования, например: runner.Add(typeof(MyTestClass).Assembly).


Просто чтобы было ясно, что этот вопрос имеет значение - это не , а на самом деле , предназначенная для разных платформ, проблема , но поиск способа запуска тестов из проекта .Net Core (способ, которым уже работает для Xamarin):

Одним из решений для этого является создание унаследованного класса в проекте .NET Core из класса (ов) проекта .NETStandard:

[TestFixture]
public class TestsClassInNetCoreProject : TestsClassInNetStandardProject
{
    // ...
}

(он будет работать в обоих направлениях: либо из командыили из меню «Выполнить тесты» VS), но это, конечно, не лучший способ справиться с этим.

Просто подытожу:

  1. Тесты должны быть помещены в отдельный проект/ assembly, как и для тестовых проектов Xamarin, которые они на самом деле не запускают обычным образом. Тесты выполняются (они запускаются через тестовый прогон внутри приложения iOS / Android).
  2. Таким образом, удобно иметь тесты в.NETStandard сборка, которую можно прикрепить куда-либо еще.
  3. Опять же, этот уже работает для Xamarin (специфичный для платформы проект, подключающий мою библиотеку .NETStandard с тестами) через тестовый прогон (NUnit one), но не для .NET Core проекта.
  4. Мне не нужно для запуска тестов на самой сборке .NET Standard (что даже невозможно), мне нужно на них нужно ссылаться из тестируемого проекта .NET Core.

Есть ли какой-нибудь способ, которым мне повезет с этим?

...