gpt4 book ai didi

c# - 单元测试 Xamarin.Forms 应用程序时引发 Xamarin.Essentials.NotImplementedInReferenceAssemblyException

转载 作者:行者123 更新时间:2023-12-03 23:02:59 26 4
gpt4 key购买 nike

我正在为我的 Xamarin.Forms 应用程序运行单元测试,单元测试抛出 Xamarin.Essentials.NotImplementedInReferenceAssemblyException :
enter image description here
我为应用程序创建了一个单元测试项目(使用 NUnit 3.12.0)并编写了以下代码来测试功能。

[TestFixture()]
public class Test
{
[Test()]
public void TestCase()
{
AutoResetEvent autoEvent = new AutoResetEvent(true);

SomeClass someClass = new SomeClass();
someClass.SomeFunction((response) =>
{
Assert.AreEqual(response, "Hello")
autoEvent.Set();
});

autoEvent.WaitOne(); //** Xamarin.Essentials.NotImplementedInReferenceAssemblyException thrown here**
}
}
下面是来自 Xamarin.Forms 应用程序的测试代码:
public class SomeClass
{

public void SomeFunction(Action<string> callback)
{
// asynchronous code...
callback("Hello");
}
}
上述功能在 Xamarin.Forms 应用程序中运行良好。
备注 :我读到可以使用 await/async,但是,我将不得不在整个项目中进行更改。目前这不是一个可行的解决方案。

编辑 1:
我创建了一个示例 Xamarin.Forms 项目,其中包含单元测试。项目可用 here

最佳答案

您需要添加 Xamarin.Essentials NuGet Package到您的单元测试项目。
我强烈推荐使用依赖注入(inject) + Xamarin.Essentials.Interfaces ,因为某些 Xamarin.Essentials API 未在 .NET Core 上实现,您需要创建自己的实现。
例如,这里有一些 Xamarin.Essentials APIs I implemented in .NET Core用于单元测试我的GitTrends应用程序:

  • AppInfo
  • Browser
  • DeviceInfo
  • Email
  • FileSystem
  • Launcher
  • MainThread
  • Preferences
  • SecureStorage
  • VersionTracking
  • 关于c# - 单元测试 Xamarin.Forms 应用程序时引发 Xamarin.Essentials.NotImplementedInReferenceAssemblyException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64423004/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com