Вопрос

В книге Роя Осеров [тестирование подразделения] [1] Книга, он объясняет, что один тест на единицу должен содержать между 0 и 1 издевателями. Он говорит о том, что если ваш тест не утверждает на насмешку, то не используйте макет вообще. Он также демонстрирует, как использовать структуру изоляции для производства заглушек, которые были созданы аналогично издевателям. Он помещает не рекомендующую ограничению на количество заглушек, созданных за тест.

Мой вопрос в том, что эти рекомендации могут применяться ко всем структурам изоляции (или всех популярных каркасов C #?)? Другими словами, есть ли рамки, которые могут генерировать только издевательства - не заглушки? Есть ли структура изоляции, которая не отличает издевателей от заглушек?

Мне просто любопытно, насколько рекомендациям Легко Осеров можно преобразовать в стандарты кодирования.

[1]: http: // Тест системы даже даже не проверяется, вместо этого данные, возвращаемые издевателями, - это то, что тестируется.

Это было полезно?

Решение

Есть рамки, такие как MOQ, которые не отличают их. Fakeiteasy идет еще дальше и называет все поддельные объекты.

Да, они могут быть применены, потому что издеватели просто умные заглушки. Неважно, что значительно, если заглушка называется издевательства, если вы не утверждаете, что больше, чем на одном издевании. Эта рекомендация Другими словами больше о утверждении только одной вещи на тест. Явные отличительные издевательства и заглушки не так важно.

Другие советы

Это напрямую соответствует рекомендации Осерово, что вы выполняете только один из утверждений за тест. В его лексиконе stub это класс, который обеспечивает фальшивый вход в тесте системы, в то время как mock это класс, который позволяет вам тестировать вывод из тестирования системы (используя фальшивый класс).

Использует ли рамка с аналогичным соглашением именования, зависит от его дизайнеров, но стандарт (если вы согласны с его рекомендацией), должны быть, что только одно утверждение выполняется за тест, и где утверждение требует поддельного объекта - это только один поддельный объект следует проверить за тест.

Конечно, не все соглашаются со своей рекомендацией, поэтому не каждый делает это таким образом.

Филипп Калчадо недавно написал об этом: http://fragmental.tw/2010/12/14/one-mock-per-test-consided-not-awesome/. Отказ Короче говоря, он говорит, что сосредоточив внимание на том, сколько издевателей / заглушек в вашем тесте, отвлекает вас от того, что должно быть главной проблемой: написание хороших спецификаций.

> can those recommendations 
> [a single unit test should contain between 0 and 1 mocks] 
> be applied to all isolation frameworks ?

Я думаю: большую часть времени да Если вы предполагаете эти определения

  • Unittestest = тестирование в изоляции (еще не совсемшное)
  • Один Unittest для одной особенности
  • заглушка или подделка - это объект, чтобы разрешить изоляцию, но не имеет функции проверки и
  • Мока - это заглушка с дополнительными функциональными возможностями, которая также позволяет проверять

я использую Moqдля моего издевания Получи это здесь

Я не уверен, что именно вы имеете в виду о "острубинге", но я предполагаю, что это, вероятно, что-то вроде Moles from Microsoft который довольно круто. Здесь

Оба действительно интересны и очень просты в использовании.

Такое правило должно рассматриваться как «тренировочные диски». Очевидно, что тест, который включает в себя многие заглушки и издевательства, потерял график, но настаивая на одном утверждении или ожидании на протяжении всего теста слишком ограничивает. Как ссылка на ссылка Calçado указывает, что имеет значение то, что есть один концепция за тест, который может привлекать несколько утверждений или ожиданий, чтобы сделать точку зрения. Последнее, что вы должны сделать, это обеспечить соблюдение такого стандарта.

Еще одна вещь, мы действительно должны говорить о «ожиданиях» здесь, индивидуальных взаимодействиях, а не целых товарищевых объектов. На практике они часто одинаковы, но она размывает концепции.

Я использую носорог для моего теста в C #. Вы можете создавать издевательства или заглушки с ним. Я призываю вас посмотреть на эту структуру: http://www.ayende.com/projects/rhino-mocks.aspx.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top