0

NDbUnit を使用しようとしています。完全なデータベース用の 1 つの大きな XSD ではなく、テーブルごとに個別の XSD を作成しました。

単一の XSD と単一の xml 読み取りのみを使用すると、テストは正常に実行されます。ただし、特定のテストでは、2 つまたは 3 つの異なる (ただし関連する) テーブルにデータが必要です。複数の 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'。

これがNDbUnitで複数のXML、XSDを読み取る正しい方法かどうかはわかりません。私はグーグルでオーバーフローしました(つまり、スタックオーバーフローを検索しました)が、賢明な方向性を得ることができませんでした。誰かが何が間違っているのか、どのように修正するのかを説明できますか?

4

2 に答える 2

2

スボーレンが道を教えてくれた。

現時点では、複数の XSD のロードはサポートされていません。

ただし、幸いなことに、単一の XSD に対して複数の XML をロードすることは可能です。

そのため、私が行ったことは、単一の XSD を作成し、関連するすべてのテーブルをそこに取り込むことでした。次にAppendXml、ReadXml と一緒に利用可能な sytanx を使用しました。このようにして、必要なテスト データを複数のテーブルにロードし、テストに合格し始めました。

このリンクは、AppendXml http://code.google.com/p/ndbunit/issues/detail?id=27に関するより多くのライトを共有します。

于 2011-05-09T15:47:03.560 に答える
2

これは NDbUnit の使用方法ではありません。複数の XSD または XML ファイルを 1 つのテスト スコープに読み込むことはサポートされていません。NDbUnit は単一の XSD の情報を使用してテーブル間の関係 (FK など) を分析し、CRUD 操作中にテーブルを適切に操作できるようにします。そのため、単一の XSD でテーブルのスコープ全体を記述する必要があります。テスト実行中に NDbUnit に操作させたいもの。

複数の XML ファイル (テスト データを含む) をロードできる可能性がありますが、これはテスト済み/サポート対象のシナリオではありません。必要なテスト データを含む XML ファイルを 1 つだけ持つことを妨げる使用シナリオを理解したいと思います。

ただし、一度に 1 つの XSD ファイル (1 つ以上のテーブルのスキーマとそれらの関係などを含む) しかロードできないことは間違いありません。

これで少し解決することを願っています。

于 2011-05-02T11:33:40.867 に答える