Чтение/загрузка нескольких XML в одном тесте инициализируется с помощью NDbUnit

Я пытаюсь использовать NDbUnit. Я создал отдельный XSD для каждой таблицы вместо одного большого XSD для полной базы данных.

Мои тесты работают нормально, когда я использую только один XSD и однократное чтение xml. Однако для конкретного теста мне нужно иметь данные в двух или трех разных (но связанных) таблицах. Если я попытаюсь прочитать более одного xsd и xml, он выдаст исключение.

Вот мой код

        [ClassInitialize()]
        public static void MyClassInitialize(TestContext testContext)
        {
            IDbConnection connection = DbConnection.GetCurrentDbConnection();
            _mySqlDatabase = new NDbUnit.Core.SqlClient.SqlDbUnitTest(connection);
            _mySqlDatabase.ReadXmlSchema(@"Data\CompanyMaster.xsd");  
            _mySqlDatabase.ReadXml(@"Data\CompanyMaster.xml");
            _mySqlDatabase.ReadXmlSchema(@"Data\License.xsd");
            _mySqlDatabase.ReadXml(@"Data\License.xml");
            _mySqlDatabase.ReadXmlSchema(@"Data\LicenseDetails.xsd");
            _mySqlDatabase.ReadXml(@"Data\LicenseDetails.xml");
            _mySqlDatabase.ReadXmlSchema(@"RelatedLicense.xsd");
            _mySqlDatabase.ReadXml(@"Data\RelatedLicense.xml");    
        }

Вот исключение, которое я получаю в момент, когда я пытаюсь прочитать License.XSD, как показано выше.

Метод инициализации класса ESMS.UnitTest.CompanyManagerTest.MyClassInitialize вызвал исключение. System.ArgumentException: System.ArgumentException: элемент уже добавлен. Ключ в словаре: «EnableTableAdapterManager». Добавляемый ключ: «EnableTableAdapterManager».

Я не уверен, что это правильный способ чтения нескольких XML, XSD с помощью NDbUnit. Я погуглил и Overflowed (т. е. искал переполнение стека), но не смог найти разумного направления. Может ли кто-нибудь объяснить, что происходит не так и как исправить?


person Subhash Dike    schedule 01.05.2011    source источник


Ответы (2)


Это не то, как NDbUnit предназначен для использования. Не поддерживается чтение нескольких файлов XSD или XML в одну тестовую область. NDbUnit использует информацию в одном XSD для анализа взаимосвязей (FK и т. д.) между вашими таблицами, чтобы иметь возможность правильно манипулировать таблицами во время операций CRUD, поэтому требуется, чтобы один XSD описывал всю область таблиц. которыми вы хотите управлять с помощью NDbUnit во время тестового прогона.

Возможно загрузить несколько XML-файлов (содержащих ваши тестовые данные), но это не проверенный/не поддерживаемый сценарий. Мне было бы интересно понять, какой сценарий использования у вас есть, что исключает наличие только одного XML-файла с необходимыми тестовыми данными.

Но определенно тот случай, когда одновременно может быть загружен только один файл XSD (содержащий схему одной или нескольких таблиц и их взаимосвязей и т. д.).

Надеюсь, это немного прояснит ситуацию.

person sbohlen    schedule 02.05.2011

Сболен указал мне путь.

Это правда, что на данный момент загрузка нескольких XSD не поддерживается.

Однако, к счастью, возможна загрузка нескольких XML-файлов в один XSD.

Итак, что я сделал, так это создал один XSD и поместил в него все связанные таблицы. Затем использовал AppendXml sytanx, доступный вместе с ReadXml. Таким образом, я мог загрузить необходимые тестовые данные в несколько таблиц, и мои тесты начали проходить.

Эта ссылка расскажет больше о AppendXml http://code.google.com/p/ndbunit/issues/detail?id=27

person Subhash Dike    schedule 09.05.2011
comment
Потрясающий! Я просто хотел бы отметить, что есть альтернатива, а именно создание нового INDbUnit каждый раз, когда вам нужно прочитать новый XSD. - person stephen; 03.12.2014