c# - Use XML stored in a resource file as mock data for unit tests -


i'm trying use xml data stored in .resx file test data unit tests.

i have code takes test data, converts stream, , tries deserialize collection of students can use mock dbset.

var stream = testdata.students.tostream(); var reader = new streamreader(stream); var serializer = new xmlserializer(typeof(collection<student>)); _students = (collection<student>)serializer.deserialize(reader); 

student class

public class student {     public int id { get; set; }     public string lastname { get; set; }     public string firstname { get; set; }     public char middleinitial { get; set; }     public datetime? enrollmentdate { get; set; }      [xmlignore]     public virtual icollection<enrollment> enrollments { get; set; } } 

it fails on last line exception:

{"<students xmlns=''> not expected."} 

i've tried adding serializable attribute student class, tried adding xmlroot attribute it, searched around on google while, couldn't find dealing resource files.

on side note, there easier/better method getting test data?

edit if helps i'm following this article.

edit 2 drilling down stack trace of inner exception, found line:

at microsoft.xml.serialization.generatedassembly.xmlserializationreadercollection1.read4_arrayofstudent() 

so changed root element of xml students arrayofstudent , voila, correctly deserializes.

here's xml data in resource file.

<students>   <student>     <id>1</id>     <lastname>alexander</lastname>     <firstname>carson</firstname>     <enrollmentdate>2010-09-01t00:00:00</enrollmentdate>   </student>   <student>     <id>2</id>     <lastname>alonso</lastname>     <firstname>meredith</firstname>     <enrollmentdate>2012-09-01t00:00:00</enrollmentdate>   </student>   <student>     <id>3</id>     <lastname>anand</lastname>     <firstname>arturo</firstname>     <enrollmentdate>2013-09-01t00:00:00</enrollmentdate>   </student>   <student>     <id>4</id>     <lastname>barzdukas</lastname>     <firstname>gytis</firstname>     <enrollmentdate>2012-09-01t00:00:00</enrollmentdate>   </student>   <student>     <id>5</id>     <lastname>li</lastname>     <firstname>yan</firstname>     <enrollmentdate>2012-09-01t00:00:00</enrollmentdate>   </student>   <student>     <id>6</id>     <lastname>justice</lastname>     <firstname>peggy</firstname>     <enrollmentdate>2011-09-01t00:00:00</enrollmentdate>   </student>   <student>     <id>7</id>     <lastname>norman</lastname>     <firstname>laura</firstname>     <enrollmentdate>2013-09-01t00:00:00</enrollmentdate>   </student>   <student>     <id>8</id>     <lastname>olivetto</lastname>     <firstname>nino</firstname>     <enrollmentdate>2005-08-11t00:00:00</enrollmentdate>   </student>   <student>     <id>9</id>     <lastname>alexander</lastname>     <firstname>carson</firstname>     <enrollmentdate>2010-09-01t00:00:00</enrollmentdate>   </student>   <student>     <id>10</id>     <lastname>alonso</lastname>     <firstname>meredith</firstname>     <enrollmentdate>2012-09-01t00:00:00</enrollmentdate>   </student>   <student>     <id>11</id>     <lastname>anand</lastname>     <firstname>arturo</firstname>     <enrollmentdate>2013-09-01t00:00:00</enrollmentdate>   </student>   <student>     <id>12</id>     <lastname>barzdukas</lastname>     <firstname>gytis</firstname>     <enrollmentdate>2012-09-01t00:00:00</enrollmentdate>   </student>   <student>     <id>13</id>     <lastname>li</lastname>     <firstname>yan</firstname>     <enrollmentdate>2012-09-01t00:00:00</enrollmentdate>   </student>   <student>     <id>14</id>     <lastname>justice</lastname>     <firstname>peggy</firstname>     <enrollmentdate>2011-09-01t00:00:00</enrollmentdate>   </student>   <student>     <id>15</id>     <lastname>norman</lastname>     <firstname>laura</firstname>     <enrollmentdate>2013-09-01t00:00:00</enrollmentdate>   </student>   <student>     <id>16</id>     <lastname>olivetto</lastname>     <firstname>nino</firstname>     <enrollmentdate>2005-08-11t00:00:00</enrollmentdate>   </student> </students> 

you can data xml file using code

using (filestream sr = new filestream(filepath, filemode.open, fileaccess.read))                 {                     xmlserializer serializer = new xmlserializer(typeof(students));                     return serializer.deserialize(sr) students;                 } 

for xmlns can't use attribute, add namespaces should add

xmlserializernamespaces np = new xmlserializernamespaces(); 

and add new namespaces np , add np serialize or deserialize parameter


Comments