C# 错误:必须调用Xamarin.Forms.Init()-Visual Studio Xamarin,单元测试错误
我在VisualStudio中使用Xamarin制作了一个android应用程序。我在VisualStudio中安装了一个模拟器。applaction使用txt文件,这是我之前在emulator上创建的(File.WriteAllText)。问题是我不能运行单元测试。DependencyService.Get抛出错误C# 错误:必须调用Xamarin.Forms.Init()-Visual Studio Xamarin,单元测试错误,c#,android,visual-studio-2012,xamarin.ios,C#,Android,Visual Studio 2012,Xamarin.ios,我在VisualStudio中使用Xamarin制作了一个android应用程序。我在VisualStudio中安装了一个模拟器。applaction使用txt文件,这是我之前在emulator上创建的(File.WriteAllText)。问题是我不能运行单元测试。DependencyService.Get抛出错误 Test Result Message: Unable to create instance of class (...). Error: System.InvalidOpera
Test
Result Message: Unable to create instance of class (...). Error: System.InvalidOperationException: You MUST call Xamarin.Forms.Init(); prior to using it..
我不知道我错在哪里,也不知道我应该在这里做什么
有一个IPersistence类提供了从文件加载的方法
public interface IPersistence
{
Task<Player[,]> Load(int x);
}
公共接口IPersistence
{
任务负载(intx);
}
我在另一个类中为android实现了它:
public class AndroidDataAccess : IPersistence
{
public async Task<Player[,]> Load(int x)
{
/*...*/
}
}
公共类AndroidDataAccess:IPersistence
{
公共异步任务加载(intx)
{
/*...*/
}
}
单元测试代码:
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Model;
using Persistence;
using Xamarin.Forms;
namespace UnitTestProject1
{
[TestClass]
public class Test1
{
private Model _model;
private IPersistence _dataAccess = DependencyService.Get<IPersistence>(); //It throws an error.
[TestInitialize]
public void Initialize()
{
_model = new Model(_dataAccess);
_model.GameWon += new EventHandler<GameWonEventArgs>(Model_GameWon);
_model.GameOver += new EventHandler(Model_GameOver);
_model.FieldChanged += new EventHandler<FieldChangedEventArgs>(Model_FieldChanged);
_model.GuardChanged += new EventHandler<GuardChangedEventArgs>(Model_GuardChanged);
}
[TestMethod]
public void BasicTest10()
{
_model.NewGame(10);
Assert.AreEqual(4, _model.S);
}
使用系统;
使用Microsoft.VisualStudio.TestTools.UnitTesting;
使用模型;
使用持久性;
使用Xamarin.Forms;
命名空间UnitTestProject1
{
[测试类]
公共类Test1
{
私有模型(u模型),;
私有IPersistence _dataAccess=DependencyService.Get();//它抛出一个错误。
[测试初始化]
公共无效初始化()
{
_模型=新模型(_dataAccess);
_model.GameWon+=新事件处理程序(model_GameWon);
_model.GameOver+=新事件处理程序(model_GameOver);
_model.FieldChanged+=新事件处理程序(model_FieldChanged);
_model.GuardChanged+=新事件处理程序(model\u GuardChanged);
}
[测试方法]
公共空间基本测试10()
{
_新游戏模型(10);
AreEqual(4,_model.S);
}
DependencyService
需要一个表单
上下文来操作。这通常是在为Android创建MainActivity
或为iOS创建AppDelegate
时创建的。对于您的测试,我建议为每个平台创建一个测试夹具,然后创建一个手动初始化dataA的方法基于平台的访问
[TestFixture(Platform.Android)]
[TestFixture(Platform.iOS)]
public class Test1 {
...
...
private IPersistence InitialisePersistance(Platform platform) { ... }
}
你在测试什么?让我们看看你的测试。