2016-10-06 3 views
0

Approvals.Verify XML을 시도했지만 문제가 속성 순서입니다. 몇 가지 요소에서 그들은 내 컴퓨터와 젠킨스에서 다른 순서로 존재합니다. 다른 question에서 클래스의 속성 순서가 변경되었습니다. 그것은 다소 효과적이었습니다 : 그것은 속성의 순서를 바꿨지 만 이제는 젠킨스의 명령이 제 컴퓨터에 있었고 그 반대도 마찬가지였습니다. 클래스의 속성 순서 변경으로 인한 도움이 없습니다.xml과 ApprovalTests를 비교할 때 속성의 순서를 무시합니다.

xml 특성의 순서를 무시하기 위해 ApprovalTests를 사용하는 방법이 있습니까? 또는 XML 직렬화에서 속성의 정확한 순서를 어떻게 말할 수 있습니까? 아니면 다른 힌트 요?

+0

젠킨스와 함께 조용하지만 강렬한 토론을 통해 자신의 속성을 뒤엎을 필요가없는 것 같군요. 사실 젠킨스 자신을 조용히 처분하는 것이 최선의 선택 일 수 있습니다. 그러나 문제를 재현 할 수있는 충분한 코드를 제공 할 수 있다면 문제를 해결할 수있는 또 다른 방법 일 수 있습니다. –

+0

[XML 표준 섹션 3.1] (https://www.w3.org/TR/REC-xml/#sec-starttags)에 따르면 ** 시작 태그 또는 빈 요소 태그의 속성 지정 순서 ** ApprovalTests가 속성 순서를 무시하지 않으면 ApprovalTests의 버그입니다. 비교를 위해 ['XNode.DeepEquals()'] (https://msdn.microsoft.com/en-us/library/system.xml.linq.xnode.deepequals (v = vs.110) .aspx)는 속성 순서를 무시합니다 , 어쩌면 당신은 그것을 사용할 수 있습니다. – dbc

+0

즉, [참조 소스] (https://github.com/approvals/ApprovalTests.Net)에서 [XmlApprovals.VerifyOrderedXml()'] (https://github.com/approvals/ApprovalTests)가 나타납니다. .Net/blob/master/ApprovalTests/Xml/XmlApprovals.cs)는 특성 순서를 표준화하려고 시도합니다. 이것이 당신이 사용하고있는 방법입니까? 그렇지 않다면 [mcve]를 제공 할 수 있습니까? – dbc

답변

2

XML 표준 섹션 3.1, 에 따르면 시작 태그 또는 비어있는 태그의 속성 지정 순서는 중요하지 않습니다. 그래서 XML 속성을 변경하면 유닛 테스트가 실패하지 않아야합니다.

reference source에서 XmlApprovals.VerifyOrderedXml() 메서드는 유효성을 검사하기 전에 내부적으로 모든 특성을 정렬하는 XmlUtils.FormatXmlWithOrderedAttributes()을 호출하여 특성 순서를 정규화 한 것처럼 보입니다. 따라서이 방법은 귀하의 필요를 충족시켜야합니다.

관련 문제