Не удается настроить модульный тест форм Xamarin с помощью MSTest с Prism - PullRequest
0 голосов
/ 20 октября 2018

У меня есть новый проект Xamarin Forms (3.2), использующий библиотеку .NetStandard (2.0.3) и Prism / Unity для навигации и внедрения зависимостей.Я изо всех сил пытался настроить базовые юнит-тесты.

Мой проект модульного тестирования имеет один класс модульного теста, который пытается протестировать метод в классе ViewModel (LoginPageViewModel).Класс ViewModel наследуется от ViewModelBase, который наследуется от BindableBase Prism и реализует интерфейс INavigationAware Prism.

public class ViewModelBase : BindableBase, INavigationAware, IDestructible

У меня есть два конструктора.Вторую я создал только для модульного теста, потому что мне не нужен INavigationService для тестов.

public LoginPageViewModel(INavigationService navigationService, IdentityService identityService) : base(navigationService)

public LoginPageViewModel(IIdentityService identityService) : base()

Проект компилируется, но я получаю это исключение для каждого из моих тестов:

Сообщение: метод теста SalesOrderApp.UnitTests.LoginPageViewModelTests.UserLogin_LoginFails_ReturnsFalseAndNoToken выдал исключение: System.TypeLoadException: не удалось загрузить тип «Prism.Navigation.Navigation.0 нейтральная версия = сборка40ee6c3a2184dc59 '.

У меня установлена ​​та же версия Prism.Unity.Forms (7.1.0.431), что и в проекте, который я тестирую, в проекте MSTest.Я изо всех сил пытался заставить MSTests работать с Призмой.Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Чтобы сделать вещи немного более понятными для будущих читателей:

Столкнулся с той же проблемой, так как не смог решить Prism INavigationService с помощью MSTest.Чтобы это исправить, мне пришлось вручную отредактировать .csproj нашего модульного теста, чтобы он указывал на .NETStandard

ДО:

<HintPath>..\packages\Prism.Core.7.1.0.431\lib\net45\Prism.dll</HintPath>

ПОСЛЕ

<HintPath>..\packages\Prism.Core.7.1.0.431\lib\netstandard2.0\Prism.dll</HintPath>

Presto changeo!Исправлено

0 голосов
/ 20 октября 2018

Без репродукции я могу только делать здесь предположения.Исходя из исключения, может показаться, что он не может разрешить интерфейсы навигации.Это говорит мне о том, что ваш проект модульного тестирования нацелен на полную .Net Framework (net45), что является единственным сценарием, который вызвал бы это исключение.

Вы можете перенастроить свои юнит-тесты на устройство, которое я рекомендую, если вы используете Xamarin, или просто на netcore.

...