メソッドとデータベースの機能を単体テストするために NDbunit を使用しています。NDbunit を機能させるには、まず xml スキーマ ファイル (.xsd) をロードし、次にデータベースに取り込まれるすべてのデータを含む xml ファイルを読み込みます。これが私の xml スキーマ ファイル MessageDS.xsd です。
<xs:schema id="MessageDS"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
xmlns:msprop="urn:schemas-microsoft-com:xml-msprop"
targetNamespace="http://tempuri.org/MessageDS.xsd"
elementFormDefault="qualified"
xmlns="http://tempuri.org/MessageDS.xsd"
xmlns:mstns="http://tempuri.org/MessageDS.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xs:element name="MessageDS" msdata:IsDataSet="true" msdata:UseCurrentLocalexmlns="true" msprop:Generator_MessageDSName="MessageDS" msprop:Generator_DataSetName="MessageDS">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="MESSAGE">
<xs:complexType>
<xs:sequence>
<xs:element name="CREATED_AT" type="xs:dateTime" />
<xs:element name="SUBJECT" type="xs:string" />
<xs:element name="MESSAGE" type="xs:string" />
<xs:element name="FROM" type="xs:string" />
<xs:element name="TO" type="xs:string" />
<xs:element name="TO_EMAIL" type="xs:string" />
<xs:element name="EMAIL_SENT_AT" type="xs:dateTime" />
</xs:sequence>
<xs:attribute name="ID" type="xs:int" use="required" />
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
ここに私のxmlデータファイルMessage.xmlがあります:
<MessageDS xlmns="http://tempuri.org/MessageDS.xsd">
<MESSAGE ID="1">
<FROM>Test User 2</FROM>
<TO>Test User 1</TO>
<MESSAGE>
</MessageDS>
最初は NDbunit の dll 参照を使用していましたが、最終的にはソース コードをダウンロードし、問題のデバッグを開始しました。xml スキーマ ファイルが読み取られた後、xml ファイルがデータセット (System.Data.DataSet) に正しく読み込まれていないことに気付きました。書き込まれている唯一の xml は次のとおりです。
<MessageDS xmlns="http://tempuri.org/MessageDS.xsd" />
何らかの理由で、MESSAGE オブジェクトが xml ファイルに読み込まれません。これは、xml スキーマ ファイルに従って xml ファイルが適切に作成されていないためか、それとも別の原因によるものかはわかりません。NDbunit のhttps://code.google.com/p/ndbunit/wiki/QuickStartGuideの例に従ってみました。また、NDbunit のテスト ファイルの xml ファイルも調べました。