Оценить различия и аналогичные с помощью оценщика различий XMLUNIT? - PullRequest
0 голосов
/ 27 сентября 2018

Я был бы очень признателен за некоторую помощь и реализацию логики, используя только XMLUNIT DifferenceEvaluator.

В любом случае, у меня есть содержимое XML в их соответствующих строках, например, XMLA и XMLB, я пытаюсь использовать класс XMLUNIT оценщика различий дляопределить поведение различий.

Я хочу добиться следующих сценариев.// Сценарий 1 У XMLA есть элемент <creationTimestamp>2018-09-12T17:33:06+01:00</creationTimestamp>";, но у XMLB нет вышеуказанного элемента, я хочу трактовать это поведение как другое, сгенерировать исключение XMLUNIT по умолчанию, говоря, что элемент отличается от XMLB ... Мне нужно изменить свой существующийлогика, поскольку я хочу рассматривать это как другое, в настоящее время это не происходит, и это рассматривает это как подобное.

Сценарий 2, если оба XMLS имеют элемент <creationTimestamp> со значениями внутри них, но в XMLB значение внутри элемента <creationTimestamp> отличается, я хочу обработать эту разницу так же, как элемент <creationTimestamp> существует в обоих XMLS, только значения разные, не знаю, как этого добиться.

Пожалуйста, помогите мне достичь этих 2 сценариев.

Пожалуйста, добавьте немного логики в мою существующую логику

Мой класс IgnoreAttributeDifferenceEvaluatorTest.cs

[TestClass()]
public class IgnoreAttributeDifferenceEvaluatorTest
{
[TestMethod()]
public void TestUserguideExample()
{
string xmla = @"
<creationTimestamp>2018-09-12T17:33:06+01:00</creationTimestamp>";

string xmlb =
@"
<testVersion>2018-09-12T14447:33:06+01:00</testVersion>";

var myDiff = DiffBuilder.Compare(xmla).WithTest(xmlb)
.WithDifferenceEvaluator(
new IgnoreAttributeDifferenceEvaluator("creationTimestamp").Evaluate)
.CheckForSimilar()
.IgnoreElementContentWhitespace()
.IgnoreComments()
.IgnoreWhitespace()
.Build();
            Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsFalse(myDiff.HasDifferences(), myDiff.ToString());
}
}
}

Мой класс IgnoreAttributeDifferenceEvaluator.cs

public class IgnoreAttributeDifferenceEvaluator
{
private string attributeName;

public IgnoreAttributeDifferenceEvaluator(string attributeName)
{
this.attributeName = attributeName;
}

public ComparisonResult Evaluate(Comparison comparison, ComparisonResult outcome)
{
if (outcome == ComparisonResult.EQUAL || outcome == ComparisonResult.SIMILAR) return outcome; // only evaluate differences.

if (outcome == ComparisonResult.DIFFERENT)
{
return ComparisonResult.SIMILAR; //returns as simmilar
}

return outcome;
}
}
}
...