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

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

Мои тесты работают нормально, когда я использую только один XSD и один xml read. Однако для перикулярного теста мне нужны данные в двух или трех разных (но связанных) таблицах. Если я попытаюсь прочитать более одного 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. Я гуглил и переполнен (то есть искал переполнение стека), но не смог получить никакого разумного направления. Может кто-нибудь объяснить, что идет не так и как исправить?

Ответы [ 2 ]

2 голосов
/ 09 мая 2011

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

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

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

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

По этой ссылке можно узнать больше о AppendXml http://code.google.com/p/ndbunit/issues/detail?id=27

2 голосов
/ 02 мая 2011

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

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

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

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

...