0

우리 조직에서는 API에 RESTful 아키텍처를 사용합니다. 매일 밤마다 빌드를 실행할 수있는 자동화 된 단위 테스트를 만들고 있습니다. 각 API 호출은 XML 문자열을 반환 한 다음 C# 개체로 deserialize합니다. 이러한 클래스를 동적으로 생성하는 방법이 있습니까? 또는 인스턴스화 할 모든 개체에 대한 클래스를 수동으로 만들어야합니까?C# 개체로의 XML 비 직렬화 : 동적 클래스, 데이터베이스 새로 고침

둘째,이 테스트를 실행하기 전의 모든 데이터베이스 값을 반환하는 방법이 있습니까? 내가 매일 밤 특정 시간에 데이터베이스를 새로 고칠 수있는 테스트 데이터베이스를 설정할 수 있지만 테스트 프로젝트 자체의 테스트 전에 데이터베이스를 초기 상태로 되돌릴 수있는 방법이 있는지 궁금합니다.

마지막으로, 누군가 내 이름 앞에 새 줄을 추가하는 방법을 알고 있습니까? 롤 :

감사합니다, 헤르 Hoyos

답변

0

일부 하드 코어 반사 방출을 금지하면 각 XML 객체에 대한 클래스를 만들어야합니다. 불행하게도 Visual Studio와 함께 제공되는 XSD 도구가 있으므로이 클래스를 빠르게 생성 할 수 있습니다. & 더티.

작업 단위 테스트 - 항상 deserialization을 건너 뛰고 linq to xml을 사용하여보다 구체적인 방법으로 테스트중인 특정 결과를 쿼리 할 수 ​​있습니다. 귀하의 모든 단위 테스트가 결과의 모든 분야에 관심이 있다면 어쨌든 잘못하고있는 것입니다. 당신의 모델을 지속적으로 업데이트해야하는 필요성을 덜어주기 때문에 나는 분명히 linq을 사용한다. (당신은 앱 모델을 재사용하고있는 것처럼 보이지 않는다.)

0

두 가지 옵션을 제공합니다.

  1. DynamicXml (http://nuget.org/packages/netfx-System.Xml.DynamicXml/)은 사용자가 요구하는 것을 정확히 수행합니다.
  2. 하여 XPathDocument에의 응답을 읽은 다음 XPath의를 사용하여 문서에 대한 단위 테스트를 실행합니다 http://msdn.microsoft.com/en-us/library/system.xml.xpath.xpathdocument.aspx

의 XPath는 크로스 플랫폼 곳이기 때문에이 너무 단단히 C# 바인딩 아니에요되는 두 번째 옵션의 장점 DynamicXML은 C# 전용입니다.

+0

유일한 문제점은 솔루션은 반환되는 XML을 기반으로 클래스가 생성됩니다. 따라서, 단위 테스트의 목적을 무효화하고 있습니다. 나는 최선의 방법은 모든 수업을 작성하는 것입니다. – hfrog713