我使用Xamarin在Visual Studio中创建了一个Android应用程序。我在visual studio中安装了一个模拟器。 applaction使用txt文件,我之前在模拟器上做过(File.WriteAllText)。问题是我无法进行单元测试。 DependencyService.Get抛出错误。
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);
}
我在另一个类中为android实现了它:
public class AndroidDataAccess : IPersistence
{
public async Task<Player[,]> Load(int x)
{
/*...*/
}
}
单元测试代码:
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);
}
答案 0 :(得分:0)
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof UserSetting)) {
return false;
}
UserSetting s = (UserSetting)o;
return id == s.id && totalMatch = s.totalMatch;
}
需要DependencyService
上下文才能运行。这通常是在为Android创建Forms
或为iOS创建MainActivity
时创建的。对于您的测试,我建议为每个平台创建一个测试夹具,然后创建一个基于平台手动初始化AppDelegate
的方法。
dataAccess