.net WP7.1上NUnit TestFixture中的DivideByZero异常
我正在为我的WP7.1应用程序实现一个数据存储访问类 类继承的一般结构如下所示:.net WP7.1上NUnit TestFixture中的DivideByZero异常,.net,exception,windows-phone-7,nunit,linq-to-xml,.net,Exception,Windows Phone 7,Nunit,Linq To Xml,我正在为我的WP7.1应用程序实现一个数据存储访问类 类继承的一般结构如下所示: IDataStore-用于清除应用程序doaim类使用的逻辑操作的接口 抽象类XmlDataStore通过XElement例程实现接口功能所需的功能,但将基本数据存储配置留给后续类 XmlDataStore中的抽象方法是: public abstract void CreateDataStore(); public abstract void OpenDataStore(); public abstract v
IDataStore
-用于清除应用程序doaim类使用的逻辑操作的接口
抽象类XmlDataStore
通过XElement例程实现接口功能所需的功能,但将基本数据存储配置留给后续类
XmlDataStore
中的抽象方法是:
public abstract void CreateDataStore();
public abstract void OpenDataStore();
public abstract void SaveChanges();
此外,抽象类还包含继承者使用的常量字符串定义:
protected const string xmlRoot = "Data";
protected const string booksRoot = "Records";
protected const string settingsRoot = "Settings";
XmlDataStore
有两个后续版本:IsolatedStorageDataStore
和InMemoryDataStore
后者是为了测试而创建的,因此我可以测试在抽象XmlDataStore
中实现的xml操作例程的正确性
我已将Windows Phone类库添加到解决方案中。通过NuGet引用NUnit并实现了一个[TestFixture]:
[TestFixture]
public class XmlDataStoreTest
{
private IDataStore _store;
public XmlBookProgressStoreTest()
{
_store = new InMemoryXmlDataStore();
}
[Test]
public void TestRegisterBookView()
{
_store.RegisterBookView(BookId, "TestBook");
}
}
InMemoryDataStore中的当前为以下类别:
public class InMemoryDataStore : XmlDataStore
{
private XDocument _inMemDoc;
public InMemoryDataStore()
{
CreateDataStore();
OpenDataStore();
}
public override void CreateDataStore()
{
try
{
var root = new XElement(xmlRoot);
root.Add(new XElement(booksRoot));
root.Add(new XElement(settingsRoot));
_inMemDoc = new XDocument(root);
}
catch (Exception ex)
{
throw ex;
}
}
public override void OpenDataStore()
{
_deusBookDataFile = _inMemDoc;
}
public override void SaveChanges()
{}
}
}
现在,当我在一个简单的应用程序调试中调试这个类时,InMemoryDataStore
会很好地实例化,但是当我调试我的单元测试时,我在这行代码中得到了一个dividebyzeroception
:var root=new-XElement(xmlRoot)代码>
显然,问题只发生在单元测试执行中,因此它必须以某种方式与之连接。为什么会出现异常?我如何修复它?到目前为止,这是一个常见问题。对于单元测试Silverlight应用程序,当前应使用Silverlight测试框架,并在设备屏幕上查看测试结果
随着NUnit 3的发布,情况应该会发生变化,它将提供Silverlight支持。请检查其他测试框架上是否存在此问题。我们将尝试Visual Studio单元测试,然后再与您联系。尝试过与单元测试框架。事实上,我试图尝试,但没有运气。VS生成一个针对.Net Framework 4.0的测试类lib项目,其中System.Xml.Linq的版本与针对WP7.1的项目不同。也许我应该尝试手动创建一个类库项目,而不使用VS2010中测试菜单中的创建测试菜单项。xUnti不会在WP7项目上工作。我要么使用NUnit,要么使用Silverlight测试框架,我只是不知道如何使用它。我希望NUnit能像预期的那样工作()通过谷歌搜索发现:1。这是WP7+NUnit广泛存在的问题。NUnit还没有对Silverlight的单元测试支持。NUnit3应该解决这个问题。到目前为止,开发人员应该使用Silverlight测试框架。