Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net WP7.1上NUnit TestFixture中的DivideByZero异常_.net_Exception_Windows Phone 7_Nunit_Linq To Xml - Fatal编程技术网

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

.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

我正在为我的WP7.1应用程序实现一个数据存储访问类

类继承的一般结构如下所示:

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测试框架。