DivideByZero Exception в NUnit TestFixture на WP7.1 - PullRequest
0 голосов
/ 24 ноября 2011

Я реализую классы доступа к хранилищу данных для моего приложения WP7.1.

Общая структура наследования классов следующая:

IDataStore - интерфейс, который объявляет логические операциичто классы doaim приложения используют.

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.

Последнее было создано для целей тестирования, поэтому я могу проверить правильность процедур XML-манипуляции, реализованных в abstract XmlDataStore.

Я добавил библиотеку классов Windows Phoneк моему решению.Ссылается на NUnit через NuGet и реализовал один [TestFixture]:

[TestFixture]
public class XmlDataStoreTest
{
        private IDataStore _store;

        public XmlBookProgressStoreTest()
        {
            _store = new InMemoryXmlDataStore();
        }

        [Test]
        public void TestRegisterBookView()
        {
            _store.RegisterBookView(BookId, "TestBook");
        }
}

An 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 в этой строке кода: var root = new XElement(xmlRoot);

Очевидно, что проблема возникает только при выполнении модульного теста, поэтомудолжно быть как-то связано с этим.Почему существует исключение и как его исправить?

1 Ответ

0 голосов
/ 25 ноября 2011

На данный момент это общая проблема. Для модульного тестирования приложений Silverlight в настоящее время следует использовать Silverlight Testing Framework и видеть результаты тестов на экране устройства.

Все должно измениться с выходом NUnit 3, который должен иметь поддержку Silverlight.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...