Nuget 패키지 및 테스트 코드 오류 => 기능이 구현되지 않았음으로 참조가 필요합니다.

안녕하세요.
MAUI에서 Bluetooth 기능을 구현하는 것이 목표입니다.
Targetframeworks로는 net6.0-ios, net6.0-android, net6.0-windows, net6.0-macos입니다.

우선 C# library 프로젝트를 생성하고 (Nuget 패키지) Plugin.BLE를 활용하여 Bluetooth 기능을 구현합니다. 이 것을 다시 Nuget 패키지로 만들어서 MAUI에서 사용하는 방향으로 진행하고 있습니다. 그리고 여기에 테스트 코드를 작성하고 XUnit으로 코드 검증을하고 있습니다. 테스트 코드를 작성하려는데 많은 에러가 발생하네요. Nuget 패키지와 테스트 코드 등 관련된 지식이 없어서 어떻게 해야될지 감이 잘 안잡힙니다.



테스트 코드에서 Bluetooth 기능이 구현된 클래스를 인스턴스 할 때 오류가 뜹니다.
=> Error : System.NotImplementedException : This functionality is not implemented in the portable version of this assembly. You should reference the NuGet package from your main application project in order to reference the platform-specific implementation`

[Bluetooth 기능 구현 .cs]
public class BluetoothLowEnergyManager : IDisposable
{
	private readonly IBluetoothLE BluetoothLowEnergy

	public BluetoothLowEnergyManager()
	{
		BluetoothLowEnergy = CrossBluetoothLE.Current; // 테스트 코드 디버깅 시 에러 발생
	}
}
[Test Code]
[Fact]
public void InstanceBluetoothLowEnergyManager
{
	BluetoothLowEnergyManager bluetoothLowEnergyManager = new();
}



(또 다른오류)

Bluetooth 기능을 구현하기 위해 어떤 학습을 진행하면 될까요?
많은 오류가 나서 해당 프로젝트를 진행하기엔 많이 부족하다고 느껴집니다. 지금 당장 문제를 해결하기 보다는 무엇을 학습해야 프로젝트를 끝 마칠 수 있을까 생각이 듭니다.

좋아요 1

MAUI에서 BLE를 사용한 경험은 없어서 한번 찾아봤습니다. 참고해주세요~

MAUI를 지원하는 BLE 패키지 같은데 써 보셨을까요?

Shinny도 있네요.

만약에 위 패키지들로 충분하지 않다면 말씀처럼 Plugin.BLE를 이용해야 될 것 같은데 플랫폼별 Adapter 클래스를 구현해야 되는 것 같아요.


Plugin.BLE 패키지를 추가하면서 플랫폼별 Adapter 클래스를 구현해주면 되지 않을까 싶네요.

좋아요 2

블루투스는 장치에 의존적입니다. 그래서 TFM이 .net6.0 이런 것으로는 테스트가 불가능합니다.
가장 간단한 해결방법은 실제 디바이스에서 실행하는 것이고(테스트 코드가 아닌 블루투스 모듈이 있는 nuget을 사용한 실제 실행 가능한 프로젝트) 만약 기업이라면 UI Test를 이용하면 되는데 이게 MAUI를 지원하는지는 모르겠네요…

좋아요 3

Xamarin 쪽은 iOS, Android UI 테스트를 지원하는데 MAUI 쪽은 살펴 봤는데 미지원 상태인것 같아요.
Xamarin UI 단위 테스트

Maui UI 단위 테스트

좋아요 2

@level120 @nyjin 좋은 정보 감사합니다. :grinning:
말씀처럼 Xamairn에서 UiTest가 가능 한 것으로 보입니다.

다만 Xamarin이 아닌 라이브러리에서 XUnit 테스트하는 방법을 찾고 있지만, 없는 것 같네요.