2011-10-11 5 views
8

XML 데이터 원본을 사용하여 MSTest에 문제가 있습니다. 나는이처럼 보이는 XML 파일을 가지고 있다고 가정 :이있을 수 있습니다 생각"깊은"XML을 MSTest XML 데이터 원본과 함께 사용하는 방법

var name = row["Name"]; 
System.ArgumentException: Column 'Name' does not belong to table User. 

을 :

<Users> 
    <User> 
     <Id>1</Id> 
     <Name> 
      <First>Mike</First> 
      <Last>Paterson</Last> 
     </Name> 
    </User> 
    <User> 
     <Id>2</Id> 
     <Name> 
      <First>John</First> 
      <Last>Doe</Last> 
     </Name> 
    </User> 
</Users> 

내 문제를하지만, 내가 이름 요소의 연락을 취하는 얻을 수있다 더 많은 DataRow 질문이 있지만 도움이 될 것입니다.

편집 :

[DeploymentItem("XmlDatasourceTest\\Users.xml"), DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\Users.xml", "User", DataAccessMethod.Sequential), TestMethod] 
public void TestMethod1() 
{ 
    var row = TestContext.DataRow; 

    DataTable table = row.Table.Copy(); 

    foreach (DataRow r in table.AsEnumerable().ToArray()) 
    { 
     r.Delete(); 
    } 

    table.ImportRow(row); 

    table.WriteXml(@"C:\test.xml"); 
} 

첫 번째 행이 수익률의 경우 :

<?xml version="1.0" standalone="yes"?> 
<DocumentElement> 
    <User> 
    <Id>1</Id> 
    </User> 
</DocumentElement> 
나는 새로운 DataTable에로의 DataRow를 복사하고 XML을 이름 요소를 작성하더라도

은 존재하지

답변

1

나는 또한 이와 같은 문제에 직면했으며이를 해결할 수있었습니다.

DataRow dataRow = TestContext.DataRow.GetChildRows("User_Name").First(); 
string s = (string)dataRow["First"]; // s = "Mike" 

"User_Name"- User 테이블과 Name 테이블을 바인드하는 하위 관계의 이름입니다.