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