Есть ли причина не использовать AssertionHelper с NUnit? - PullRequest
7 голосов
/ 15 декабря 2011

Я уже некоторое время пользуюсь NUnit и извлекаю свои тестовые классы из AssertionHelper.Таким образом, мои тесты используют синтаксис, такой как:

Expect(myValue, Is.EqualTo(3), "value wasn't equal to 3");

вместо:

Assert.That(myValue, Is.EqualTo(3), "value wasn't equal to 3");

Почти каждый пример с NUnit, который я вижу, использует синтаксис Assert.That(), но кажетсяExpect() имеет больше смысла (по крайней мере для меня), так как я ожидаю определенного поведения от моего кода.

Есть ли какой-либо недостаток в использовании AssertionHelper с NUnit, или это действительно сводится к простовопрос вкуса / стиля?

Заранее спасибо!

Ответы [ 4 ]

5 голосов
/ 15 декабря 2011

И то, и другое делает одно и то же, и вы можете указать пользовательское ограничение, которое реализует интерфейс IConstraint.С моей точки зрения Assert() немного легковесен, так как не обязывает вас наследовать все тестовые приборы от специального класса.

1 голос
/ 29 января 2016

Основная проблема с AssertionHelper заключается в том, что его используют очень немногие, поэтому новые функции и ограничения NUnit, как правило, к нему не добавляются. Поскольку им пренебрегают и они не используются широко, команда NUnit рассматривает возможность удаления или создания отдельного пакета.

Команда ищет отзывы сообщества о том, следует ли удалять его, поэтому не стесняйтесь комментировать проблему.

0 голосов
/ 14 августа 2017

Роб Проус прав, что команда NUnit не поддерживает AssertionHelper.Я использовал это в течение приблизительно 8 месяцев, когда я обнаружил, что это было устаревшим в обновлении, и я предложил поддержать это.Дискуссия вокруг этого шла очень медленно, и я немного нетерпелив, поэтому я написал NUnit.StaticExpect , который находится на Nuget и предлагает замену AssertionHelper с помощью «статического» импорта в вашемкод.Я переключил на него производственный проект, и он работает хорошо.

Я также начал в это время другой путь: NExpect , который предлагает синтаксис, более напоминающий Chai но с возможностью расширения больше похож на Jasmine .NExpect находится в довольно удобном состоянии - я уже давно использую его в своих проектах.Существует демонстрационный проект , который можно использовать для наблюдения за эволюцией утверждений с помощью:

  1. Assert. {Определенный метод} (например, Assert.AreEqual)
  2. Assert.That ({значение или лямбда}, {ограничение текущего времени})
  3. Использование AssertionHelper
  4. Использование NUnit.StaticExpect
  5. Использование NExpect

А также приведем пример расширяемости NExpect.Надеюсь, это поможет.

0 голосов
/ 28 января 2016

Из-за того, как я называю свои переменные, мои тесты часто заканчиваются строкой:

Assert.That(actual, Is.EqualTo(expected));

, которую IMO читает лучше (более свободно), чем

Expect(actual, Is.EqualTo(expected));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...