NUnit Assert AreEqual строки diff

Я пишу модульные тесты для генератора кода, и большинство моих тестов сравнивают выходные данные, которые занимают несколько строк, с некоторым золотым выводом. В настоящее время я сравниваю результаты с Assert.AreEqual(string, string) который отображает контекст вокруг первого различия.

К сожалению, это не очень полезно. В идеале, я хотел бы получить разницу результатов. Каков наилучший способ сделать это? Мой текущий план - записать сгенерированный код в файл и вызвать исполняемый файл, на который ссылается DIFFTOOL env var (еще diff.exe от PATHиначе поведение по умолчанию NUnit) и вызов Assert.Fail() с соответствующим сообщением.

1 ответ

Вы можете исключить отсечение длинных строк, указав .NoClip в качестве модификатора EqualConstraint, Это требует от вас перейти от наследства Assert.AreEqual использовать модель ограничения утверждения:

C# Assert.That(actual, Is.EqualTo(expected).NoClip);

Это даст вам полное значение обеих строк, но может быть трудно прочитать без переформатирования.

Мы давно были заинтересованы в улучшении отображения различий между двумя длинными строками. Приходите и сделайте пиар!:-)

Другие вопросы по тегам