2015-11-28 7 views
2

Попытки сделать модульное тестирование с использованием MSTest в VS2015 с пакетом Microsoft Группы NuGet и работает в следующем сообщении об ошибкеМодульного тестирования Microsoft Группа

"Microsoft.Band.BandIOException: An error occurred while attempting to acquire the Bluetooth device service. 
This error can occur if the paired device is unreachable or has become unpaired from the current host. 
System.InvalidOperationException: A method was called at an unexpected time. (Exception from HRESULT: 0x8000000E)". 

код работает нормально при запуске внутри приложения. Он не работает на линии, чтобы позвонить BandClientManager.Instance.ConnectAsync.

ответ

1

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

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

await Windows.ApplicationModel.Core.CoreApplication.MainView.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() => 
{ 
    IBandClient client = await BandClientManager.Instance.ConnectAsync(...); 
    ... 
}); 

С другой стороны, если у вас есть доступ к элементу управления пользовательского интерфейса, вы можете использовать его Dispatcher непосредственно.

Любой код, который в конечном итоге вызывает BluetoothLEDevice.FromBluetoothAddressAsync, должен делать это в потоке пользовательского интерфейса. Запрос доступа Bluetooth будет происходить всякий раз, когда изменяется манифест пакета приложения (.appxmanifest).

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

Смежные вопросы