2017-02-13 34 views
8

КонтекстКак реализовать XUnit описательное сообщение Assert?

в XUnit GitHub Я нашел это: Add Assert.Equal(expected, actual, message) overload #350(так разработчик обратиться за несуществующую перегрузку ниже)

Цитаты из ответа:

Мы верующий в самодокументирующий код; который включает ваши утверждения.

(так что команда XUnit отвергает)

ОК, я получил его. Я также считаю, что сам документирующий код. Тем не менее я не могу найти этот случай использования:

Sample

// Arrange 
// Create some external soap service client and its wrapper classes 

// Act 
// client.SomeMethod(); 

// Assert 
// Sorry, soap service's interface, behaviour and design is *given* 
// So I have to check if there is no Error, and 
// conveniently if there is, then I would like to see it in the assertion message 

Assert.Equal(0, client.ErrorMessage.Length); // Means no error 

// I would like to have the same result what would be the following *N*U*n*i*t* assert: 
// Assert.AreEqual(0, client.ErrorMessage.Length, client.ErrorMessage); // Means no error 

Вопрос

Как я могу реализовать описательное сообщение утверждать, в данном случае в XUnit, которые до сих пор не имеет такого перегрузка?

+0

Непонятно, в чем проблема. Почему вы не просто используете 'Assert.AreEqual (0, client.ErrorMessage.Length, client.ErrorMessage);' как вы указали в комментарии? – Kritner

+0

В XUnit такой перегрузки нет. Это вызов NUnit. Пожалуйста, ознакомьтесь с самым стартовым предложением: разработчик запрашивает такую ​​перегрузку, а команда XUnit отвергает из-за цитирования «Мы верю в самодокументирующий код, который включает ваши утверждения» –

+0

@ g.pickardou, Почему бы не использовать предложения предоставляется по ссылке. Подобно свободным утверждениям или создайте собственное утверждение, которое обертывает «Assert.True» или «Assert.False», которые остались с перегрузками сообщений. Это было указано ниже. Вы можете предоставлять сообщения Assert.True и .False.Если вы просто не можете жить без сообщений (и отказываться использовать другое утверждение), вы всегда можете вернуться к: Assert.True (number == 2, «Это мое сообщение»); ' – Nkosi

ответ

6

Используйте предложения, предоставленные по ссылке. Например, fluent assertions или создайте собственное утверждение, которое обертывает Assert.True or Assert.False, которые остались с перегрузками сообщений. Было отмечено далее вниз

Quote

Вы можете предоставить сообщения в Assert.True и .false. Если вы просто не можете жить без сообщений (и отказаться от использования другого утверждения), вы всегда можете упасть обратно:

Assert.True(number == 2, "This is my message"); 

Quote:

Если вы действительно хотите иметь сообщения, которые вы может добавить Fluent Assertions или, возможно, xbehave к вашим тестовым проектам и использовать их синтаксис. Свободные утверждения даже вызывают исключения xunit.net, если они сталкиваются с его присутствием.

+0

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

+0

Это заняло много времени, но, наконец, я получил его. (Это тестовая платформа с элементами zillions, которую я должен забрать и мгновенно работать с ...) –

+0

Свободных утверждений очень легко подобрать. Я использую его много, и кривая обучения не была крутой. – Nkosi

 Смежные вопросы

  • Нет связанных вопросов^_^