我正在为我的WP7.1应用程序实现数据存储访问类。
类的继承的一般结构如下:
IDataStore
- 解析应用程序所使用的逻辑操作的接口。
abstract class XmlDataStore
通过XElement例程实现接口功能的请求,但将基本数据存储配置保留给后继类。
XmlDataStore
中的抽象方法是:
public abstract void CreateDataStore();
public abstract void OpenDataStore();
public abstract void SaveChanges();
此外,抽象类包含后继者使用的const字符串定义:
protected const string xmlRoot = "Data";
protected const string booksRoot = "Records";
protected const string settingsRoot = "Settings";
XmlDataStore
有两个接班人:IsolatedStorageDataStore
和InMemoryDataStore
。
后者是为测试目的而创建的,因此我可以测试abstract 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
实例很好,但是当我调试我的单元测试时,我在这行代码中得到DivideByZeroException
:{{1 }}
显然,问题只发生在单元测试执行中,因此必须以某种方式连接到它。为什么有例外,我该如何解决?
答案 0 :(得分:0)
截至目前,这是一个常见问题。对于单元测试Silverlight应用程序,当前应该使用Silverlight Testing Framework并在设备屏幕上查看测试结果。
随着NUnit 3的发布,应该会发生变化,这将是Silverlight的支持。