WP7.1上的NUnit TestFixture中的DivideByZero异常

时间:2011-11-24 08:47:51

标签: .net exception windows-phone-7 nunit linq-to-xml

我正在为我的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有两个接班人:IsolatedStorageDataStoreInMemoryDataStore

后者是为测试目的而创建的,因此我可以测试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 }}

显然,问题只发生在单元测试执行中,因此必须以某种方式连接到它。为什么有例外,我该如何解决?

1 个答案:

答案 0 :(得分:0)

截至目前,这是一个常见问题。对于单元测试Silverlight应用程序,当前应该使用Silverlight Testing Framework并在设备屏幕上查看测试结果。

随着NUnit 3的发布,应该会发生变化,这将是Silverlight的支持。